c# - 使用 Direct Line v3.0 NuGet 包向我的机器人发送消息

标签 c# botframework direct-line-botframework

我正在尝试使用 Direct Line v3.0 NuGet package向我的机器人发送消息。我正在关注 sample在 Github 上,但我没有得到我期望的行为。

示例代码如下:

DirectLineClient client = new DirectLineClient(directLineSecret);        
var conversation = await client.Conversations.StartConversationAsync();

while (true)
{
    string input = Console.ReadLine().Trim();

    if (input.ToLower() == "exit")
    {
        break;
    }
    else
    {
        if (input.Length > 0)
        {
            Activity userMessage = new Activity
            {
                From = new ChannelAccount(fromUser),
                Text = input,
                Type = ActivityTypes.Message
            };

            await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
        }
    }
}

这是我的代码:

var directLineSecret = "MY_SECRET";
var client = new DirectLineClient(directLineSecret);
var conversation = await client.Conversations.StartConversationAsync();

var testActivity = new Activity
{
    From = new ChannelAccount(name: "Proactive-Engine"),
    Type = ActivityTypes.Message,
    Text = "Hello from the PCE!"
};

var response = await client.Conversations.PostActivityAsync(conversation.ConversationId, testActivity);

我正在记录我的机器人收到的所有消息。我可以使用 Bot Emulator 在 Azure 上的端点与机器人交谈,所以我相信它正在通过网络聊天 API 工作。但是,当我运行上面的代码时,机器人只记录一条 conversationUpdate 消息。我发送的消息未被记录,response 的值为 null

我希望有人能帮我找出我哪里出错了。谢谢!

最佳答案

看demo如何实例化ChannelAccount:

new ChannelAccount(fromUser)

然后看ChannelAccount构造函数签名:

public ChannelAccount(string id = null, string name = null)

这意味着 fromUser 作为 id 传递。但是看看你是如何实例化 ChannelAccount 的:

new ChannelAccount(name: "Proactive-Engine")

该代码不传递 id,它传递 name。所以,你可以这样改变它:

new ChannelAccount("Proactive-Engine")

如果你的聊天机器人需要name,那么像这样实例化:

new ChannelAccount("MyChatbotID", "MyChatbotName")

关于c# - 使用 Direct Line v3.0 NuGet 包向我的机器人发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46136123/

相关文章:

botframework - 如何使用直线 API 使聊天机器人显示为实时聊天?

c# - 申请表 - 检查输入是否为空

c# - 从映射到排列的数字,如何生成不同于先前 perm 的其他排列。通过交换元素?

botframework - 在 Microsoft Teams 选项卡中打开 URL

node.js - Microsoft Bot 框架 session.endDialog() 使用

azure - 在 botframework-sdk 中,我的机器人突然开始出现此错误 Error : Get Token request returned http error: 401

c# - Azure Function 正常运行一段时间后无法加载程序集

c# - C# 是否提供了一种在可枚举集合中搜索子列表的方法?

botframework - 自适应卡片 - DateInput 和 SubmitAction

javascript - 从嵌入式网络聊天发送事件