Я написал бота, используя SDK microsoft framework v4 на C #. Бот развернут в Azure и подключен к веб-чату, прямой линии и каналам Facebook Messenger. Бот у всех работает нормально.
Пользователи могут подписаться на получение обновлений заранее. Для этого я использую сохраненную ConversationReference, которая затем используется для отправки упреждающих сообщений. Опять же, все работает нормально, за исключением того случая, когда бот wepApp перезапускается, что вызывает: -
Exception caught : Microsoft.Bot.Schema.ErrorResponseException: Operation returned an invalid status code 'Unauthorized' for the facebook channel.
Если я отправлю другое сообщение боту из мессенджера facebook, то упреждающие сообщения снова начнут работать даже для старых сохраненных ConversationReferences.
Первоначально я использовал MemoryStorage в соответствии с примерами, но я изменил его, чтобы использовать хранилище BLOB-объектов Azure для диалогаState и userState. Это не имеет значения. Это как если бы он должен хранить токен аутентификации facebook в памяти, поэтому, если приложение перезапускает токен, токен теряется до тех пор, пока пользователь не отправит другое сообщение из мессенджера.
Есть ли способ исправить это, поскольку он делает бессмысленными подписанные проактивные обновления, если он не может справиться с перезапуском веб-приложения бота?
Большое спасибо