更改发送到我们的机器人程序的直达活动的服务url



我们正试图使用直接线路api向我们的机器人发送消息,然后在不使用直接线路api的情况下从我们的机器人中发送消息。为了做到这一点,我们需要一个不同于默认的直接线路api服务url的服务url

我们已经尝试在活动中放入不同的服务url,我们发送了直接线路api,但当活动发送到机器人程序时,直接线路api服务url会被填充
我们还尝试在活动中更改服务url,一旦它被发送到机器人程序,但机器人程序仍然尝试将其响应活动发送到直达api

我们实现这一目标的唯一方法是执行以下操作:

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

虽然这是有效的,但我们认为这不是解决这个问题的最佳方法,我们可能不应该修改转弯状态

有没有更好的方法来更改此服务url?

机器人程序至少有三个级别可以向用户发送活动。TurnContext.SendActivities调用BotAdapter.SendActivitiesAsync,如果您使用的是BotFrameworkAdapter,那么它又使用存储在轮次状态中的连接器客户端调用Conversations.SendToConversationAsync。这三个方法族都可用于您的机器人程序,因此,如果您想绕过turn上下文,则可以直接使用适配器;如果您想跳过适配器,则可以使用连接器客户端。

您已经发现,当您尝试使用turn上下文发送活动时,您的活动会被发送到连接器客户端的基本URI。如果您不想修改处于turn状态的连接器客户端,那么您可以创建一个不同的连接器客户端并使用它。

最新更新