Как бот может начать тему в Slack - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь, чтобы мой бот-фреймворк-бот отвечал пользователю, запустив тему. Таким образом, я могу следить за тем, с кем разговаривает бот, находясь в канале с большим количеством людей.

Согласно слабой документации, мне нужно установить для свойства thread_ts свойство ts, отправленное моему боту. Я перепробовал несколько вещей и не смог этого сделать. Это самый лаконичный пример, который у меня есть:

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

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

Это не работает для меня.

1 Ответ

0 голосов
/ 28 июня 2018

Вам нужно будет установить текст в 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...