从用户向机器人发送消息

时间:2019-02-04 06:09:33

标签: c# botframework

我正在使用漫游器框架来创建聊天机器人。我在Microsoft Teams中使用它。

我想以编程方式从用户向机器人发送消息。但是我无法做到这一点。

我尝试使用直线,但是它没有帮助我。我是这个机器人框架的新手。

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

var testActivity = new Activity
{
    From = new Microsoft.Bot.Connector.DirectLine.ChannelAccount(objectid, userName),
    Type = Microsoft.Bot.Connector.DirectLine.ActivityTypes.Message,
    Text = "Hello from the PCE!"
};

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

Activity userMessage = new Activity
{
    From = new Microsoft.Bot.Connector.DirectLine.ChannelAccount(objectid, userName),
    Text = "test",
    Type = Microsoft.Bot.Schema.ActivityTypes.Message
};

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

请帮助我。在执行此代码时,我在var response中得到响应,但是没有发送消息,也没有看到bot框架中的日志。

1 个答案:

答案 0 :(得分:0)

在两种情况下,自适应卡可以通过自适应提交动作来模拟imBack

  1. 自适应卡必须没有输入元素
  2. 操作的Data属性必须是字符串(要从用户发送的文本)

下面是一个示例,说明如何使用AdaptiveCards NuGet软件包在BotBuilder v4中创建和发送此类卡:

var card = new AdaptiveCard
{
    Body = { new AdaptiveTextBlock("Adaptive Card") },
    Actions = { new AdaptiveSubmitAction { Title = "Say 'test'", Data = "test" } },
};

var reply = (Activity)MessageFactory.Attachment(new Attachment {
    ContentType = AdaptiveCard.ContentType,
    Content = card,
});

await turnContext.SendActivityAsync(reply);