机器人如何在Slack中启动线程

时间:2018-06-28 00:10:02

标签: c# botframework slack

我试图通过启动线程使我的bot框架bot回复用户。这样,我可以保持僵尸程序在与很多人聊天的频道中与谁聊天。

根据松弛的文档,我需要将~/bin/gam/属性设置为发送给我的机器人的thread_ts属性。我已经尝试了一些方法,但无法完成此操作。这是我最简洁的示例:

ts

这对我不起作用。

1 个答案:

答案 0 :(得分:10)

您需要在ChannelData中设置文本,以便您的机器人在线程中回复。现在,您正在活动中进行设置 reply = reply.CreateReply("reply"); 您所需要做的就是这个:

reply.ChannelData = JObject.Parse($"{{text:'reply', thread_ts:'{ts}'}}");

这是对话框中的完整工作方法:

public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
    var activity = await argument;
    var ts = activity.ChannelData?.SlackMessage?.thread_ts
             ?? activity.ChannelData?.SlackMessage?.ts
             ?? activity.ChannelData?.SlackMessage["event"].thread_ts
             ?? activity.ChannelData?.SlackMessage["event"].ts;

    var reply = (Activity)activity;
    reply = reply.CreateReply();

    reply.ChannelData = JObject.Parse($"{{text:'reply', thread_ts:'{ts}'}}");
    await context.PostAsync(reply);
}