Guest User

Untitled

a guest
Feb 8th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. import * as botbuilder from 'botbuilder';
  2. import * as teams from 'botbuilder-teams';
  3. import express from 'express';
  4. import request from 'request-promise-native';
  5. import dotenv from 'dotenv';
  6.  
  7. dotenv.config();
  8.  
  9. var qumuUrl = process.env.QumuUrl;
  10.  
  11. var adapter = new botbuilder.BotFrameworkAdapter({
  12. appId: process.env.MicrosoftAppId,
  13. appPassword: process.env.MicrosoftAppPassword
  14. });
  15.  
  16. var server = express();
  17.  
  18. server.set('port', process.env.PORT || 5000);
  19.  
  20. server.listen(server.get('port'), () => {
  21. console.log('Node app is running at localhost:' + server.get('port'));
  22. console.log('appid = ' + process.env.MicrosoftAppId);
  23. });
  24.  
  25. server.post('/api/messages', (req, res) => {
  26. adapter.processActivity(req, res, async turnContext => {
  27. switch (turnContext.activity.type) {
  28. case botbuilder.ActivityTypes.Message:
  29. await handleMessage(turnContext);
  30. break;
  31. case botbuilder.ActivityTypes.Invoke:
  32. await handleComposeExtension(turnContext);
  33. break;
  34. default:
  35. console.log('Error occured in process activity.');
  36. break;
  37. }
  38. });
  39. });
  40.  
  41. const handleMessage = async turnContext => {
  42. let utterance = turnContext.activity.text;
  43.  
  44. await turnContext.sendActivity('You said ' + utterance + '!');
  45. };
  46.  
  47. const handleComposeExtension = async turnContext => {
  48. let searchTerm = turnContext.activity.value.parameters.find(obj => {
  49. return obj.name === 'searchTerm';
  50. }).value;
  51.  
  52. console.log('Search term: ' + searchTerm);
  53.  
  54. let url =
  55. qumuUrl +
  56. '&search=title,contains,' +
  57. searchTerm +
  58. '&search=description,contains,' +
  59. searchTerm;
  60.  
  61. await request(url, {
  62. json: true,
  63. auth: {
  64. user: process.env.QumuUser,
  65. pass: process.env.QumuPass,
  66. sendImmediately: true
  67. }
  68. }).then(
  69. data => {
  70. var qumuData = data['kulus'].filter(obj => {
  71. return obj.passwordProtected === false;
  72. });
  73.  
  74. let attachments = [];
  75.  
  76. qumuData.forEach(obj => {
  77. attachments.push(
  78. botbuilder.CardFactory.heroCard(obj.title, [obj.thumbnail.url])
  79. );
  80. });
  81.  
  82. let response = teams.ComposeExtensionResponse.result('list')
  83. .attachments(attachments)
  84. .toResponse();
  85.  
  86. console.log('Compose Extension JSON: ' + JSON.stringify(response));
  87.  
  88. return turnContext.sendActivity(JSON.stringify(response));
  89. },
  90. error => {
  91. console.warn('Request error: ' + error);
  92. }
  93. );
  94. };
Add Comment
Please, Sign In to add comment