1 回答
TA贡献1809条经验 获得超8个赞
解决你的问题
我的猜测是您收到此错误:
System.ArgumentNullException: '值不能为空。参数名称:clientId'
这是因为您没有指定appIdin new ConnectorClient。您可以忽略这一点,因为您最好做一些类似的事情:
await stepContext.Context.Adapter.ContinueConversationAsync("<yourAppId>", messageDetails.RelatesTo, async (ITurnContext turnContext, CancellationToken cancel) =>
{
await turnContext.SendActivityAsync(triggerReply);
}, cancellationToken);
关键是确保您拥有ConversationReference
需要向其发送主动消息的用户。如果您没有,您应该能够CreateConversation
建立一个
请注意,您还拥有:
if (messageDetails.IsTrustedServiceUrl) { MicrosoftAppCredentials.TrustServiceUrl(messageactivity.ServiceUrl); }
这基本上是说,“如果我们已经信任 serviceUrl,请再次信任它”。相反,您需要:if (!messageDetails.IsTrustedServiceUrl)
主动机器人如何工作
以下是主动示例如何工作的简要说明。我建议下载并使用它以更好地理解。
机器人在
api/messages
(所有机器人都执行此操作)和api/notify
(只有此机器人执行此操作)上建立侦听器。当用户向机器人发送消息时,它会
api/messages
通过.ActivityHandler
对于任何消息,机器人都会保存对话参考
当有人访问时
<theBotUrl>/api/notify
,它会循环访问每个保存的对话引用,调用ContinueConversation,并将消息发送给保存的对话引用中的所有用户。
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报