我已经实现了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);
}
答案 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请随时为该讨论做出贡献。