使用ConnectorClient调用CreateDirectConversationAsync报MethodNotAllowed异常求助
解决ConnectorClient调用CreateDirectConversationAsync抛出MethodNotAllowed异常的问题
你遇到的问题是因为ConnectorClient并不适用于创建Direct Line对话,它主要用于Bot Framework与各消息通道的交互,而Direct Line有专属的API和SDK规范,直接调用CreateDirectConversationAsync会因接口不匹配触发MethodNotAllowed异常。
你的代码示例:
var connector = new ConnectorClient(new Uri(serviceUrl), new MicrosoftAppCredentials(microsoftAppId, microsoftAppPassword)); await connector.Conversations.CreateDirectConversationAsync(activity.From, activity.Recipient, activity);
正确解决方案:使用Direct Line SDK创建对话
1. 安装Direct Line NuGet包
Install-Package Microsoft.Bot.Connector.DirectLine
2. 用DirectLineClient实现对话创建与消息发送
using Microsoft.Bot.Connector.DirectLine; // 初始化DirectLineClient,传入你的Direct Line密钥 var directLineClient = new DirectLineClient("你的DirectLine密钥"); // 启动新对话 var conversation = await directLineClient.Conversations.StartConversationAsync(); // 构造并发送初始消息(对应原代码中的activity) var initialMessage = new Activity { From = new ChannelAccount(id: activity.From.Id, name: activity.From.Name), Text = activity.Text, Type = ActivityTypes.Message }; await directLineClient.Conversations.PostActivityAsync(conversation.ConversationId, initialMessage);
关键注意点
- 必须使用Direct Line密钥,而非Bot的Microsoft App ID和密码,该密钥可在Azure门户Bot资源的Direct Line频道设置中获取。
- 若误用了Bot Framework的服务端点作为
serviceUrl,也会引发此类错误,Direct Line的正确服务地址为https://directline.botframework.com/v3/directline。
内容的提问来源于stack exchange,提问作者Davido
相关产品推荐
相关产品推荐

