Короткий ответ: вы не можете.
Более длинный ответ заключается в том, что вам нужно думать об этом как о разговоре. Если вы задали кому-то вопрос и не получили от него ответа в течение 20 секунд - это было бы довольно неудобно, не так ли?
Вместо этого мы придумали способы компенсировать это молчание , В физической беседе люди могут взаимодействовать с вами и задавать вам вопросы, чтобы заполнить время. Если вы разговариваете по телефону, они могут играть в Hold Musi c. Или мы можем на данный момент прекратить разговор и сообщить им позже, когда будет результат.
При построении Действия у нас есть аналогичные параллели, которые могут работать лучше или хуже в зависимости от наших точных потребностей.
Вступление в разговор
Один из подходов состоит в том, что когда мы получаем запрос от пользователя, мы делаем две вещи:
- Запускаем задачу, которая выполнит запросите и сохраните результаты в отдельной «базе данных ответов», индексированной по отношению к пользователю, идентификатору сеанса или некоторому другому временному идентификатору, который мы можем сгенерировать и использовать позже.
- Во время выполнения запроса мы отвечаем на Пользователь говорит, что мы работаем над этим, и задает ему еще один вопрос.
Затем, когда они отвечают своим ответом на этот другой вопрос, мы можем проверить, есть ли у нас ответ для них в базе данных. , Если мы сделаем, мы ответим с этим. Если нет, мы повторим шаг 2 до тех пор, пока мы не сделаем это.
Этот подход хорошо работает, если у нас есть другие вопросы, или если у нас хорошее место, чтобы «поболтать». Изображение при бронировании авиабилетов - когда мы ищем рейсы, мы можем спросить, предпочитают ли они места у окна или у прохода (о чем нам нужно будет спросить позже), или поговорить, поговорив, путешествуют ли они по делам или на отдыхе.
Использование «Hold Musi c»
Вариант этого позволяет нам сыграть немного Hold Musi c, пока мы обрабатываем ответ.
Вместо того, чтобы задавать вопрос на шаге 2 выше, мы отвечаем Media Response , который воспроизводит примерно 20 секунд музыки c. Когда musi c завершится, нашему веб-крюку выполнения будет отправлено событие MEDIA_STATUS
, и мы можем либо вернуть информацию из базы данных ответов, либо сказать, что мы все еще работаем над этим и сыграть больше musi c.
Это менее разговорный, но может сработать лучше, если нам на самом деле пока нечего сказать.
Отправка уведомления
Если ответ может занять очень много времени, тогда лучше просто позволить им делать другие вещи и отправлять уведомление или текст или электронное письмо, когда у вас есть результат. В этих случаях, однако, требуется, чтобы пользователь каким-либо образом зарегистрировался у вас, и, вероятно, он более уместен, если у вас есть давние отношения с пользователем.
Резюме
Вы должны возвращать результаты так быстро, как только можете, чтобы они были похожи на разговор Когда вы не можете, подумайте о других средствах, например, о том, как мы будем считать, что было бы, если бы мы разговаривали с другим человеком.