Как добавить ответ бота в веб-чат?

Я не могу получить ответ от бота и добавить его в веб-чат, предоставленный MS Botframework.

Вот что я сделал до сих пор:

  1. Создан бот на https://dev.botframework.com/ (без миграции)

  2. Интегрированный веб-чат и Direct Line

  3. Создал сервер прослушивания фляги и сгенерировал HTTPS, используя ngrok

  4. Предоставил адрес созданного сервера в качестве конечной точки обмена сообщениями для бота.

  1. Создана HTML-страница с использованием приведенного ниже кода (работает локально без какого-либо сервера)
<html>
  <head>
    <link href="https://cdn.botframework.com/botframework-webchat/latest/botchat.css" rel="stylesheet" />
  </head>
  <body>
    <div id="bot"/>
    <script src="https://cdn.botframework.com/botframework-webchat/latest/botchat.js"></script>
    <script>
      BotChat.App({
        directLine: { secret: 'direct_line_secret_key' },
        user: { id: 'userid' },
        bot: { id: 'botid' },
        resize: 'detect'
      }, document.getElementById("bot"));
    </script>
  </body>
</html>

Теперь я могу отправлять сообщения из пользовательского интерфейса как пользователь и перехватывать их на сервере прослушивателя фляг.
Но как мне ответить с сервера, чтобы сообщение приходило от бота и добавлялось в пользовательский интерфейс?

Я что-то пропустил?

Я пытался выполнить https://directline.botframework.com/v3/directline/conversations/{convoId} / actions запрос POST, но он снова возвращается только на сервер и не добавляется в веб-чат.

data = json.dumps({"type": "message","from":{"id":"botid"},"text": "Hii!"})

requests.post('https://directline.botframework.com/v3/directline/conversations/' + r['conversation']['id'] + '/activities', 
headers={"Authorization": "Bearer " + "secret_key", "Content-Type": "application/json", "Content-Length": "512"},data=data

ПРИМЕЧАНИЕ: я использую Botframework только для пользовательского интерфейса веб-чата и ничего больше.

РЕДАКТИРОВАТЬ 1:

отправил это из веб-чата

http://bcebb07a.ngrok.io/webhook '[POST]> ********************************** **************************************** {'type': 'message', ' id ': '5DvIa5ImiPF4G6WnGlPYyY | 0000002 ',' timestamp ': '2018-06-05T06:51:45.3174659Z ',' serviceUrl ':' https://directline.botframework.com/',' channelId ':' directline ', 'from': {'id': 'sid'}, 'разговор': {'id': '5DvIa5ImiPF4G6WnGlPYyY'}, 'ополучатель ': {' id ': 'one_assist@CrbpWod1mw8', ' name ':' OneAssist '},' textFormat ':' plain ',' locale ':' en-US ', ' text ':' hello how are you ',' channelData ': {' clientActivityId ':' 1528180308547.7414264322396316.5 '}} 5DvIa5ImiPF4G6WnGlPYYY

################################################## ################## {'messages': [{'id':

'5DvIa5ImiPF4G6WnGlPYyY | 0000000', 'разговор ID:' 5DvIa5ImiPF4G6WnGlPYyY', ' создан ': '2018-06-05T06:32:50.9651813Z', 'from': 'sid', 'text': ' channel ':' hello, hello, hello: {'clientActivityId': '1528180308547.7414264322396316.0'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000001', 'разговорный идентификатор': '5DvIlGYYYI: '2018-06-05T06:47:14.1602925Z', 'from': 'sid', 'text': 'how are you', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.3'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000002', ' dialogId': '5DvIa5ImiPF4G6WnGlPYyY', ' создано ': '2018-06-05T06:51:45.317465 from': 'sid', 'text': 'hello how are you', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.5'}, 'images': [], 'attachments': []}], 'водяной знак': '2'}

{"error": {"code": "BotError", "message": "Не удалось отправить действие: истекло время ожидания бота" }, "httpStatusCode": 504 } 127.0.0.1 - - [05/Jun/2018 12:22:12] "POST /webhook HTTP/1.1" 200 - ************************************************************************** http://bcebb07a.ngrok.io/webhook' [POST]> ************************************************************************** {'type': 'dialogUpdate', 'id': 'D3XJ6CAaVsc', 'timestamp': '2018 -06-05T06: 51: 56.7508828Z ',' serviceUrl ':' https://directline.botframework.com/',' channelId ':' directline ',' from ': {' id ': '5DvIa5ImiPF4G6WnGlPYyY '}, 'разговор': {'идентификатор': '5DvIa5ImiPF4G6WnGlPYyY'}, 'получатель': {'идентификатор': 'one_assist @ CrbpWod1mw8', 'имя': 'OneAssist'}, 'membersAdded': [{{'id': 'botid '}]} 5DvIa5ImiPF4G6WnGlPYyY

################################################## ################## {'messages': [{'id':

'5DvIa5ImiPF4G6WnGlPYyY | 0000000', 'разговор ID:' 5DvIa5ImiPF4G6WnGlPYyY', ' создан ': '2018-06-05T06:32:50.9651813Z', 'from': 'sid', 'text': ' channel ':' hello, hello, hello: {'clientActivityId': '1528180308547.7414264322396316.0'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000001', 'разговорный идентификатор': '5DvIlGYYYI: '2018-06-05T06:47:14.1602925Z', 'from': 'sid', 'text': 'how are you', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.3'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000002', ' dialogId': '5DvIa5ImiPF4G6WnGlPYyY', ' создано ': '2018-06-05T06:51:45.317465 from': 'sid', 'text': 'hello how are you', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.5'}, 'images': [], 'attachments': []}], 'водяной знак': '2'}

{"error": {"code": "BotError", "message": "Не удалось отправить действие: истекло время ожидания бота"}, "httpStatusCode": 504} 127.0.0.1 - - [05 / Jun / 2018 12:22: 32] "POST / webhook HTTP / 1.1" 200 -

# отправил это с сервера с кодом ******************************************* ******************************* http://bcebb07a.ngrok.io/webhook '[POST]> *** ************************************************** ********************* {'type': 'message', 'id': '5DvIa5ImiPF4G6WnGlPYyY | 0000003', 'timestamp': '2018-06-05T06: 52: 16.6925987Z ',' serviceUrl ':' https://directline.botframework.com/',' channelId ':' directline ',' from ': {' id ':' botid '},' разговор ': {'id': '5DvIa5ImiPF4G6WnGlPYyY'}, 'получатель': {'id': 'one_assist @ CrbpWod1mw8', 'name': 'OneAssist'}, 'text': 'Hii!'} 5DvIa5ImiPF4G6WnGlPYyY

################################################## ################## {'messages': [{'id':

'5DvIa5ImiPF4G6WnGlPYyY | 0000000', 'разговор ID:' 5DvIa5ImiPF4G6WnGlPYyY', ' создан ': '2018-06-05T06:32:50.9651813Z', 'from': 'sid', 'text': ' channel ':' hello, hello, hello: {'clientActivityId': '1528180308547.7414264322396316.0'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000001', 'разговорный идентификатор': '5DvIlGYYYI: '2018-06-05T06:47:14.1602925Z', 'from': 'sid', 'text': 'how are you', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.3'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000002', ' dialogId': '5DvIa5ImiPF4G6WnGlPYyY', ' создано ': '2018-06-05T06:51:45.317465 из ':' sid ',' text ':' привет, как дела? ', channelData': {'clientActivityId': '1528180308547.7414264322396316.5'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY|0000003', 'dialogId': '5DvIa5ImiPF4G6WnGlPYyY', 'созданный': '2018-06-05T06:52:16.6925987Z', 'from': 'botid' H 'text ',' images ': [],' attachments ': []}], 'watermark': '3'} https://directline.botframework.com/v3/directline/conversations/5DvIa5ImiPF4G6WnGlPYyY/activities/

https://directline.botframework.com/v3/conversations/5DvIa5ImiPF4G6WnGlPYyY/activities {"error": {"code": "BotError", "message": "Не удалось отправить действие: истекло время ожидания бота"}, "httpStatusCode": 504}

1 ответ

У меня была похожая проблема при использовании ngrok, и я замечаю, что в ваших логах есть ссылки на 127.0.0.1. Попробуйте добавить параметр -host-header в командную строку ngrok.

Например я использую

ngrok http -host-header=localhost:55486 55486

Где 55486 - номер порта, на котором находится моя конечная точка.

Другие вопросы по тегам