如何将用户和僵尸网络活动发布到对话

时间:2017-11-08 14:57:54

标签: botframework

我已经实现了bot,它使用会话ID作为密钥将所有已发送和已接收的活动保存为表存储作为活动对象(JSON)。

当用户重新连接到对话时,我想使用相关的对话ID从表存储中发送所有活动。

问题在于,僵尸程序最初发送的活动运行正常,但用户活动在对话中不可见。我用Botframework Emulator进行了测试。没有错误被触发。 我想我没有正确地创建活动。

这是我的代码(confJSONObj包含以前保存的活动信息)

var confJSONObj = JsonConvert.DeserializeObject<Activity>(logEntry.ActivityJson);

if (confJSONObj.Type.Contains("message"))
{
    IMessageActivity message2 = Activity.CreateMessageActivity();
    message2.Recipient = confJSONObj.Recipient;
    message2.From = confJSONObj.From;
    message2.Conversation = confJSONObj.Conversation;
    message2.ChannelId = confJSONObj.ChannelId;
    message2.Text = confJSONObj.Text;
    message2.Speak = confJSONObj.Text;
    message2.Locale = confJSONObj.Locale;
    message2.Type = confJSONObj.Type;
    message2.Id = confJSONObj.Id;
    message2.Timestamp = confJSONObj.Timestamp;
    message2.LocalTimestamp = confJSONObj.LocalTimestamp;
    message2.ServiceUrl = confJSONObj.ServiceUrl;
    message2.TextFormat = confJSONObj.TextFormat;
    message2.ChannelData = confJSONObj.ChannelData;
    message2.Attachments = confJSONObj.Attachments;

    await connector.Conversations.SendToConversationAsync((Activity)message2);
}

1 个答案:

答案 0 :(得分:0)

  最初由机器人发送的活动工作正常,但用户活动是   不可见

这是因为没有编写WebChat控件来支持重新显示源自用户的消息(通常,网络聊天控件从控件底部的文本框接收用户消息,而不是从服务器接收)。 / p>

目前,在WebChat控件中重播聊天记录不是受支持的功能。对于WebChat控件,此Pull请求:https://github.com/Microsoft/BotFramework-WebChat/pull/615是朝这个方向迈出的一步:但它还没有被合并或发布(并且,还需要从bot端完成更多工作才能生成这是一个功能齐全的功能)。

这里有一个.net sdk bot:https://github.com/JasonSowers/ChatHistoryBot-Public,它使用分叉的WebChat从数据库中恢复历史记录。但是,这是一个不受支持且不受维护的实现。

有关在WebChat中重播对话历史记录所需要的内容的广泛讨论:https://github.com/Microsoft/BotFramework-WebChat/issues/365请随时为该讨论做出贡献。