Отправка ответа Webhook на разговор с помощью session.send в Azure Bot Framework (Nodejs) - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время предпринимается попытка интеграции Azure Bot Framework с внешними платформами, такими как Integromat.Я использую фрагмент кода ниже, чтобы отправить имя и номер мобильного телефона, предоставленные пользователем.Вводимые пользователем данные отправляются на веб-крючок для интегратора, который отправляет ответ веб-крючка.

bot.dialog('WebTest', function (session) {
    session.send('conversation.id: ' + session.message.address.conversation.id);
    session.userData.convoID = session.message.address.conversation.id;
   // var request = require('request');         
   // var url = "https://hook.integromat.com/y6d18ahnsfanbkwqfdmygkwd2ft93vr2"
        request.post({   
            headers: { 'content-type': 'application/x-www-form-urlencoded' },
          url: 'https://hook.integromat.com/ynwbud77o7up7rrhl3m8tvdriquhtess',
                body: 'first=' + session.userData.first + '&mobile=' + session.userData.mobile + '&convoID=' +session.userData.convoID
        }).on('response', function (response) {
            //session.send(response);
            response.on('data', function (data) {
                console.log('data: ' + data);
            })
           // session.send(data)
        });    
   // session.send(data);
   //session.send(response);
    session.send("This service is still under construction");
}).triggerAction({ matches: /^webby/i })

Ответ правильно зарегистрирован в консоли https://i.stack.imgur.com/XQC8u.png

Однако я не уверен, как я смог бы отправить его обратно в бот и отобразить его наuser.

Я исследовал Directline API в качестве опции, получая ID разговора и следуя документации.Я использовал эту ссылку: https://directline.botframework.com/v3/directline/conversations/{{1.convoID}}/activities И отправил следующее содержимое запроса в качестве полезной нагрузки json вместе с ключом авторизации в качестве заголовка:

{
    "type": "message",
    "from": {
        "id": "user1"
    },
    "text": "hello"
}

Хотя для этого я получаю ошибку 404,с ошибками «BadArgument» и «Неизвестный разговор».

Любая помощь, которая направит меня в правильном направлении, будет оценена, спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

Я не уверен на 100 процентов, что конкретно вы хотели бы сделать со своими данными в этой функции:

response.on('data', function (data) {
    console.log('data: ' + data);
})

Но причина, по которой session.send(data) не работает после этого, должна быть вызвана data является объектом, а не строкой .В этом случае вы можете сделать что угодно, чтобы вместо аргумента сделать строку строкой, от простого JSON.stringify(data) до форматирования вывода с полями.

Если из бота был сделан прямой вызов, он, вероятно, сработал без сбоев, потому что вы можете общаться от бота до бота через этот API;но если conversationID разрешает один в боте, который используется в настоящее время (или просто еще не существует), то ожидается ошибка.

...