Я занимаюсь разработкой бота для канала Skype, который может отправлять проактивные сообщения.
Я последовал примеру проекта https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/16.proactive-messages, и это работает для моих нужд.
Iразмещать моего бота на сервисе общего хостинга, а не в Azure.
Я зарегистрировал своего бота в Azure Channel Registration, протестированном в скайпе.Бот отвечает мне, и когда я отправляю запрос в проактивную конечную точку, я получаю проактивное сообщение.Все хорошо.
Тогда я понял, что через некоторое время превентивный запрос получает 500 (Внутренняя ошибка сервера).После этого я набрал что-то для бота из скайпа, затем снова отправил проактивный запрос, бот отправил проактивное сообщение.
Я исследовал эту проблему и обнаружил две вещи.Сначала включите AlwaysOn в IIS, но я на виртуальном хостинге, я не могу этого сделать.Во-вторых, регулярно посылайте запросы к боту, чтобы он оставался в живых.
Чем я заметил, я могу сделать это с каналом DirectLine.Я установил свой код, чтобы начать разговор, отправить какое-то сообщение и получить его, прежде чем отправлять проактивное уведомление.Начать разговор с DirectLine было легко, я отправил сообщение и получил ответ.Так как это запрос бота, я думаю, что это может решить мой 500 (Внутренняя ошибка сервера) статус ответа с проактивным.Но это не так.
Я могу получать проактивные сообщения только в Skype, только если я наберу что-то для бота из скайпа за короткий промежуток времени.В противном случае превентивный запрос сообщения Skype получает ошибку 500.
Я не знаю, как это сделать.