Изменение URL-адреса службы для прямого действия, отправляемого нашему боту - PullRequest
1 голос
/ 13 июля 2020

Мы пытаемся отправить сообщение нашему боту с помощью API прямой линии, а затем отправить сообщение от нашего бота без использования API прямой линии. Для этого нам нужен URL-адрес службы, отличный от URL-адреса службы API прямой линии по умолчанию. Мы попытались указать другой URL-адрес службы в действии, которое мы отправляем в API прямой линии, но затем, когда действие отправляется боту, вместо этого заполняется URL-адрес службы API прямой линии. Мы также попытались изменить URL-адрес службы в действии после того, как он был отправлен боту, но бот по-прежнему пытается отправить свое ответное действие в API прямой линии. Единственный способ заставить это работать - это сделать следующее:

((Microsoft.Bot.Connector.IConnectorClient)turnContext.TurnState["Microsoft.Bot.Connector.IConnectorClient"]).BaseUri = new System.Uri("DIFFERENT_SERCVICE_URL");

Хотя это работает, мы не думаем, что это лучший способ решить эту проблему, и мы, вероятно, не должны изменять состояние поворота.

Есть ли лучший способ изменить этот URL-адрес службы?

1 Ответ

0 голосов
/ 15 июля 2020

Существует как минимум три уровня, на которых ваш бот может отправлять действия пользователю. TurnContext.SendActivities вызывает BotAdapter.SendActivitiesAsync, а если вы используете BotFrameworkAdapter, то это, в свою очередь, вызывает Conversations.SendToConversationAsync с использованием клиента коннектора, сохраненного в состоянии очереди. Все три из этих семейств методов доступны вашему боту, поэтому, если вы хотите обойти контекст поворота, вы можете использовать адаптер напрямую, а если вы хотите обойти адаптер, вы можете использовать клиент коннектора напрямую.

Вы обнаружили, что ваши действия отправляются на базовый URI клиента коннектора, когда вы пытаетесь отправить действия с использованием контекста поворота. Если вы не хотите изменять клиент соединителя в состоянии поворота, вы можете создать другой клиент соединителя и использовать его вместо этого.

...