Я сделал типографию бота в Python, который работает локально, но не на сервере.В чем проблема? - PullRequest
0 голосов
/ 25 апреля 2019

Я сделал бот-типинг на python,

, который работает локально, но не на сервере.

В чем проблема?

Я пишу правильный код,

И он работает на эмуляторе Python.

Но не на сервере.

async def create_reply_activity_typing(request_activity: Activity, text: str, attachment: Attachment = None) -> Activity:
activity = Activity(
    type=ActivityTypes.typing,
    channel_id=request_activity.channel_id,
    conversation=request_activity.conversation,
    recipient=request_activity.from_property,
    from_property=request_activity.recipient,
    text=None,
    service_url=request_activity.service_url)
return activity

#### А ниже приведен код, который фактически отправляет действие.

async def request_handler(context: TurnContext) -> web.Response:
if context.activity.type == 'message':
  prompt_message = await create_reply_activity_typing(context.activity, None)
  time.sleep(5)
  await context.send_activity(prompt_message)
  return await handle_message(context)

1 Ответ

0 голосов
/ 26 апреля 2019

Существуют две версии веб-чата, о которых вам необходимо знать - веб-чат и бот-чат. Обратите внимание, Bot Chat устарел.

Что касается событий ввода, Bot Chat не ожидает отображения следующего действия, если оно показывает событие ввода. Тем не менее, веб-чат делает паузу перед выполнением следующего действия. В настоящее время iFrame отображает Bot Chat, а эмулятор использует Web Chat, поэтому ваше событие ввода текста работает в эмуляторе, а не в iFrame. Несмотря на то, что iFrame в настоящее время использует Bot Chat, в следующем выпуске, который должен состояться в ближайшие пару дней, iFrame будет обновлен для отображения веб-чата.

Вы можете либо дождаться обновления, либо добавить тайм-аут к своему коду после того, как отправите операцию ввода.

prompt_message = await create_reply_activity_typing(context.activity, None)
await context.send_activity(prompt_message)

# Note the timeout needs to be after the activity is sent
time.sleep(5) 

return await handle_message(context)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...