Как получить секретные ключи бота веб-чата?

Со следующим URL-адресом я нашел способ извлечь секретные ключи бота веб-чата:

https // dev.botframework.com / api / bots / {bot_id} / channels / webchat "

Он вернет ответ JSON следующего вида: секретные ключи веб-чата

Это хорошо работает, когда я вызываю его в браузере и когда я вхожу в систему на https://dev.botframework.com/. Теперь я хотел бы написать его с помощью PowerShell. Перед тем, как начать писать сценарий, я попытался вызвать его с помощью Postman. Моя проблема в том, что мне нужен токен (токен доступа?), Чтобы вызвать его с помощью Postman. Если я возьму IntercomAuthCookie из сеанса браузера в заголовки в Postman, я получу ожидаемый результат, как здесь.

Теперь мой вопрос: с каким API я могу получить IntercomAuthCookie?

Я попытался получить токен доступа Bearer здесь с помощью OAuth на https://login.microsoftonline.com/common/oauth2/v2.0/token, но когда я использую его по другому запросу, я получаю сообщение «срок действия входа истек»


person jyfa    schedule 17.12.2018    source источник
comment
Я не могу заставить работать даже подход браузера (после входа на dev.botframework.com). (Он даже не показывает мне ключи). Были ли вы предприняли какие-либо дальнейшие шаги, чтобы заставить эту часть работать?   -  person Dana V    schedule 22.12.2018
comment
Есть способ получить ключи. Но в настоящее время есть ошибка, которая удалит текущую конфигурацию веб-канала, если вы попытаетесь получить ключи. Я обновлю, как только ошибка будет исправлена, и подтвердю подход.   -  person Dana V    schedule 04.01.2019


Ответы (1)


После недель и долгих поисков я нашел три способа получить секретные ключи канала WebChat.


Подход Dev Botframework Browser

По следующему URL-адресу вы можете получить его в формате JSON:

https // dev.botframework.com / identity / signin? requestUrl = / api / bots / {botId} / channels / webchat

Он спросит вас о ваших учетных данных и перенаправит вас на https // dev.botframework.com / api / bots / {botId} / channels / webchat.


Подход Azure Cli (не рекомендуется)

С помощью этого сообщения Как программно получить секрет DirectLine приложения чат-бота Microsoft Bot Framework? я нашел следующую команду:

az bot webchat show -n "{botId}" -g "{resourceGroupName}" --with-secrets --subscription "{subscriptionId}"

Не забудьте войти в систему (с помощью команды «az login») перед выполнением указанной выше команды.

Почему этот подход не рекомендуется?
Я понял, что после выполнения этой команды она повредила канал WebChat в Azure, и я не смог вернуть его к работе снова. Вот почему я настоятельно не рекомендую его использовать.


Подход с HTTP-запросом GET - браузер не требуется (наиболее рекомендуется для написания сценариев)

После долгих исследований исходного кода Python Azure Cli Bot Service и Azure Mgmt Bot Service я обнаружил следующий запрос:

https // management.azure.com / subscriptions / {subscriptionId} / resourceGroups / {resourceGroupName} /providers/Microsoft.BotService/botServices/ {botId} / channels / WebChatChannel / listChannelWithKeys? api-version = 2018-07-12

Не забудьте также добавить токен носителя доступа в заголовок запроса авторизации.


Протестировал все подходы. Все заработало как положено.

person jyfa    schedule 05.01.2019
comment
Привет @jyfa. Замечательно. Да, у меня тоже были эти подходы, и у PowerShell тоже. Но; пожалуйста, помните об ошибке, о которой я упоминал ранее. Если вы извлечете ключи, это может привести к их удалению или нарушению канала веб-чата. Ваш канал все еще работает? Показывает ли "Бег" в представлении каналов в лазурном клинке бота? - person Dana V; 07.01.2019
comment
Как я уже упоминал в своем ответе, второй подход не рекомендуется из-за упомянутой вами ошибки. Вы правы, это сломает канал WebChat, и нет возможности вернуть канал в состояние «Работает». Но последний подход (я использую его с командой powershell curl) работает без нарушения канала. - person jyfa; 09.01.2019