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

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

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

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

  2. Интегрированный веб-чат и прямая линия

  3. Создал сервер прослушивателя flask и сгенерировал 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

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

ИЗМЕНИТЬ 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'}, 'recipient': {'id': 'one_assist @ CrbpWod1mw8', 'name': 'OneAssist'}, 'textFormat': 'plain', 'locale': 'en-US', 'text': 'привет, как дела', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.5'}} 5DvIa5ImiPF4G6WnGlPYyY

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

'5DvIa5ImiPF4G6WnGlPYyY | 0000000', 'talkId': '5DvIa5ImiPF4G6WnGlPYyY', 'created': '2018-06-05T06: 32: 50.9651813Z', 'from': 'sid', 'text': 'hello' : {'clientActivityId': '1528180308547.7414264322396316.0'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY | 0000001', 'partitionId': '5DvIaGymi' created : '2018-06-05T06: 47: 14.1602925Z', 'от': 'sid', 'text': 'как дела', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.3'}, 'изображения ': [],' вложения ': []}, {' id ':' 5DvIa5ImiPF4G6WnGlPYyY | 0000002 ',' talkId ':' 5DvIa5ImiPF4G6WnGlPYyY ',' created ':' 2018-06-05T06: 51: 45.3174659 from ':' sid ',' text ':' hello how are you ',' channelData ': {' clientActivityId ':' 1528180308547.7414264322396316.5 '},' images ': [],' attachments ': []}], 'водяной знак': '2'}

{"error": {"code": "BotError", "message": "Failed to send activity: bot timed out"}, "httpStatusCode": 504} 127.0.0.1 - - [05 / июн / 2018 12:22 : 12] «POST / webhook HTTP / 1.1» 200 - ************************************ ************************************ http://bcebb07a.ngrok.io/webhook '[ POST]> ********************************************* ************************** {'type': 'talkUpdate', 'id': 'D3XJ6CAaVsc', 'timestamp': '2018 -06-05T06: 51: 56.7508828Z ',' serviceUrl ':' https://directline.botframework.com/ ',' channelId ':' directline ',' from ': {' id ':' 5DvIa5ImiPF4G6WnGlPYyY '},' talk ': {' id ':' 5DvIa5ImiPF4G6WnGlPYyY '},' recipient ': {' id ': 'one_assist @ CrbpWod1mw8', 'name': 'OneAssist'}, 'membersAdded': [{'id': 'botid'}]} 5DvIa5ImiPF4G6WnGlPYyY

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

'5DvIa5ImiPF4G6WnGlPYyY | 0000000', 'talkId': '5DvIa5ImiPF4G6WnGlPYyY', 'created': '2018-06-05T06: 32: 50.9651813Z', 'from': 'sid', 'text': 'hello' : {'clientActivityId': '1528180308547.7414264322396316.0'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY | 0000001', 'partitionId': '5DvIaGymi' created : '2018-06-05T06: 47: 14.1602925Z', 'от': 'sid', 'text': 'как дела', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.3'}, 'изображения ': [],' вложения ': []}, {' id ':' 5DvIa5ImiPF4G6WnGlPYyY | 0000002 ',' talkId ':' 5DvIa5ImiPF4G6WnGlPYyY ',' created ':' 2018-06-05T06: 51: 45.3174659 from ':' sid ',' text ':' hello how are you ',' channelData ': {' clientActivityId ':' 1528180308547.7414264322396316.5 '},' images ': [],' attachments ': []}], 'водяной знак': '2'}

{"error": {"code": "BotError", "message": "Failed to send activity: bot timed out"}, "httpStatusCode": 504} 127.0.0.1 - - [05 / июн / 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 '},' talk ': {' id ':' 5DvIa5ImiPF4G6WnGlPYyY '},' recipient ': {' id ':' one_assist @ CrbpWod1mw8 ',' name ':' OneAssist '}, ' text ':' Привет! '} 5DvIa5ImiPF4G6WnGlPYyY

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

'5DvIa5ImiPF4G6WnGlPYyY | 0000000', 'partitionId': '5DvIa5ImiPF4G6WnGlPYyY', 'created': '2018-06-05T06: 32: 50.9651813Z', 'from': 'sid', 'text': 'hello' : {'clientActivityId': '1528180308547.7414264322396316.0'}, 'images': [], 'attachments': []}, {'id': '5DvIa5ImiPF4G6WnGlPYyY | 0000001', 'talkId': '5DvIaGymi' created : '2018-06-05T06: 47: 14.1602925Z', 'от': 'sid', 'text': 'как дела', 'channelData': {'clientActivityId': '1528180308547.7414264322396316.3'}, 'изображения ': [],' вложения ': []}, {' id ':' 5DvIa5ImiPF4G6WnGlPYyY | 0000002 ',' talkId ':' 5DvIa5ImiPF4G6WnGlPYyY ',' created ':' 2018-06-05T06: 51: 45.3174659 from ':' sid ',' text ':' hello how are you ',' channelData ': {' clientActivityId ':' 1528180308547.7414264322396316.5 '},' images ': [],' attachments ': []}, { 'id': '5DvIa5ImiPF4G6WnGlPYyY | 0000003', 'talkId': '5DvIa5ImiPF4G6WnGlPYyY', 'created': '2018-06-05T06: 52: 16.6925987Z', 'from': 'botid': ',' from ':' botid ',' II ',' images ': [],' attachments ': []}],' watermark ':' 3 '} https://directline.botframework.com/v3/directline/conversations/5DvIa5ImiPF4G6WnGlPYyY/activities/

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


person sid8491    schedule 04.06.2018    source источник
comment
Ваш бот нормально работает с параметром "Тест в веб-чате" на портале Azure?   -  person Anita George    schedule 04.06.2018
comment
@AnitaGeorge нет, я смог получить сообщение на сервере, но не смог отправить его обратно в пользовательский интерфейс   -  person sid8491    schedule 04.06.2018
comment
Как выглядит действие, которое вы отправляете в веб-чат?   -  person D4RKCIDE    schedule 04.06.2018
comment
У вас есть репо для вашей реализации бот-фреймворка? Сам веб-чат общается с ботом через запрос на опрос или поток, который открывается при создании окна чата. Дополнительную информацию об этом можно найти на здесь. Реализация одной из этих конечных точек должна помочь в решении этой проблемы. Но было бы легче ответить, предоставив дополнительную информацию о вашем боте.   -  person Mark B    schedule 04.06.2018
comment
@JasonSowers data = json.dumps({"type": "message","from":{"id":"botid"},"text": "Hii!"}). также обновлено в вопросе   -  person sid8491    schedule 05.06.2018
comment
@MarkB извините, у меня нет репо. Я создал бота на dev.botframework.com без какой-либо подписки на лазурную версию. Я не создавал никаких бот-сервисов на лазурном портале, так как не использую ничего, кроме веб-чата. Я создал свой собственный сервер для конечной точки сообщений, и я получаю сообщения на сервере. Единственная проблема в том, что я не знаю, как отправить сообщение с этого сервера / бота обратно в пользовательский интерфейс веб-чата.   -  person sid8491    schedule 05.06.2018
comment
@MarkB Я также обновил детали вопроса с помощью журналов. помогите пожалуйста.   -  person sid8491    schedule 05.06.2018
comment
Не могли бы вы сделать минимальную воспроизводимую версию вашего бота, чтобы показать нам? Из имеющейся на данный момент информации непонятно, какова структура вашего проекта. Возможно, вам может потребоваться создать подписку бесплатного уровня для Azure, чтобы получить доступ к функциям, которые вы пытаетесь использовать.   -  person Mark B    schedule 05.06.2018
comment
это то, что я подозреваю, но поскольку я использую только веб-чат вместе с прямой линией, он не нужен. отсюда и путаница. @MarkB   -  person sid8491    schedule 06.06.2018


Ответы (1)


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

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

ngrok http -host-header=localhost:55486 55486

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

person Morph    schedule 05.06.2018
comment
не повезло .. все еще та же ошибка. Кстати, я уже мог получать сообщения на конечной точке. - person sid8491; 05.06.2018