Не забывайте, что Кортана является диалоговой (RESTful, и по большей части без сохранения состояния).Спросите себя, какая конфигурация является частью диалога, а не частью сервиса.Если есть конфигурация, отправленная пользователем, то имеет смысл сохранить ее в сеансе, используя один из трех описанных контекстов: пользовательские данные, данные разговора или данные личного разговора.Это все основа работы: управление данными состояния .
Есть несколько способов определить, настроен ли Cortana или нет.Если вы не сохранили свойства в userData, предположите, что вы не настроены, и измените ваш диалог.Если вы хотите проверить во время вызова, вы всегда можете сделать что-то вроде этого if( session.message.entities[0].name === 'Microsoft.Launch' ) { ... }
В одном из моих умений я просто делаю это ... if(! session.userData.bookName ) { session.beginDialog('openBook'); return; }
, где openBook
устанавливаетname.
Если это связано со службой, вы можете переместить свою конфигурацию туда, где вам удобно.Для сохранения его в хранилище Azure может потребоваться перезапуск службы для использования изменений (если вы не проводите непрерывный опрос). И наоборот, вы можете поместить данные конфигурации в свойства системы (переменные среды), либо в web.config
, либо в контейнер.Например,
<configuration>
<appSettings>
<!-- update these with your BotId, Microsoft App Id and your Microsoft App Password-->
<add key="BotId" value="YourBotId" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" /> ...
Можно настроить IIS для отслеживания изменений в файле конфигурации для автоматического перезапуска.
Надеюсь, это поможет.