Интерактивные сообщения в ботките - PullRequest
0 голосов
/ 06 декабря 2018

В настоящее время я размещаю Slackbot в облаке IBM.Все работает нормально, пока я не хочу добавлять интерактивные сообщения.

Это часть документации

Чтобы использовать интерактивные сообщения, ваш бот должен быть зарегистрирован как приложение Slack и должен будет использовать аутентификацию кнопки Slackсистема.Чтобы получать обратные вызовы, зарегистрируйте URL-адрес обратного вызова как часть конфигурации приложений.Встроенная в Botkit поддержка системы Slack Button поддерживает интерактивные обратные вызовы сообщений по URL-адресу https://_your_server_/slack/receive. Обратите внимание, что Slack требует, чтобы этот URL-адрес был защищен с помощью https.

Так что я понял, что это BOTKITсоздает URL-адрес запроса, который я могу использовать.в этом случае https://_my_ibm_cloud_url_/slack/receive

Но, конечно, это не работает, иначе я бы не был здесь:)

У кого-нибудь есть идея?

Вот как это делается в данный момент.

server.js

    require('dotenv').load();

    var express = require('express');
    var bodyParser = require('body-parser');
    var verify = require('./security');
    var app = express();
    app.use(bodyParser.json({
      verify: verify
    }));

    var port = process.env.PORT || 5000;
    app.set('port', port);

    require('./app')(app);

    // Listen on the specified port
    app.listen(port, function() {
      console.log('Client server listening on port ' + port);
    });

app.js

require('dotenv').load();

var middleware = require('botkit-middleware-watson')({
  iam_apikey: process.env.ASSISTANT_IAM_APIKEY,
  workspace_id: process.env.WORKSPACE_ID,
  url: process.env.ASSISTANT_URL || 'https://gateway.watsonplatform.net/assistant/api',
  version: '2018-07-10'  
});


module.exports = function(app) {
  if (process.env.USE_SLACK) {
    console.log('test')
    var Slack = require('./bot-slack');
    Slack.controller.middleware.receive.use(middleware.receive);
    Slack.bot.startRTM();
    console.log('Slack bot is live');
  }

bot-slack.js

var Botkit = require('botkit');

var controller = Botkit.slackbot();


controller.configureSlackApp({
  clientId: process.env.SLACK_CLIENTID,
  clientSecret: process.env.SLACK_CLIENT_SECRET,
});

var bot = controller.spawn({
  token: process.env.SLACK_TOKEN

});

controller.hears(['.*'], ['direct_message', 'direct_mention', 'mention'], function(bot, message) {

bot.replies....

});

module.exports.controller = controller;
module.exports.bot = bot;

1 Ответ

0 голосов
/ 06 декабря 2018

Не похоже, что вы вызвали метод configureIncomingWebhook для создания фактической конечной точки webhook.См. Документы ниже:

https://botkit.ai/docs/readme-slack.html#botconfigureincomingwebhook

...