LUISを利用したBot FrameworkからSlackへ投稿するときに困ったこと。

必要なこと

  • SlackのInteractive Messagesを有効にする必要がある

To create a full-fidelity Slack message, set the Activity object’s channelData property to a JSON object that specifies Slack messages, Slack attachments, and/or Slack buttons.

Note To support buttons in Slack messages, you must enable Interactive Messages when you connect your bot to the Slack channel.

試すとき

以下のURLで、Slackのメッセージフォーマットを確認できる。

channelDataプロパティに設定する。

const recognizer = new builder.LuisRecognizer(LuisModelUrl);
const intents = new builder.IntentDialog({ recognizers: [recognizer] })
.matches('Greeting', (session) => {
  session.send('You reached Greeting intent, you said \'%s\'.', session.message.text);
  session.send('Hello!');
})
.matches('Weather', (session) => {
  request
    .get('http://weather.livedoor.com/forecast/webservice/json/v1?city=130010')
    .end((err, res) => {
        const forecast = res.body.forecasts[0];
        session.send(
          {
            "channelData": {
              "text": `${forecast.date}${forecast.telop}だよ`,
              "attachments": [
                {
                  "title": "今日の天気",
                  "image_url": forecast.image.url
                }
              ]
            }
          }
        );
    });
});

エンティティを抽出する

Recognize intents and entities with LUIS