2

当消息与正在处理的同一文件有关时,我正在尝试使用同一线程中的 webhook 向 google 聊天 API 发送帖子消息。现在消息正在发布,但不在同一个线程中。任何帮助将不胜感激。

public async Task ExecutionStarted(string fileName, string filePath)
        {
            var today = DateTime.Now.ToString("yyyyMMddTHH:mm:ss");
            string json = "{\"text\":\"" + today + ": Processing file " + fileName + " from " + filePath + "\"}";
            await PostToGoogleChat(json);
        }

public async Task PostToGoogleChat(string json)
        {
            HttpClient client = new HttpClient();
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            var result = await client.PostAsync(new Uri(_chatUrl), content);
        }
4

4 回答 4

1

为了响应线程,您必须在调用的 URL 中包含线程标识符。线程标识符是parent参数的一部分(请参阅 参考资料spaces.message.create)。

当您从 webhook 获取消息时(请参阅:消息资源thread,您可以从它所拥有的属性中获取它发布的线程)。之后,在创建消息时,您只需将该线程的确切名称(这是它的标识符,应该类似于spaces/AAAAMpdlehY/threads/UMxbHmzDlr4)作为消息父级发送。

于 2019-11-06T16:41:54.690 回答
1

根据this docs,只需将threadKey添加到查询参数

https://developers.google.com/hangouts/chat/reference/rest/v1/spaces.messages/create

同一个threadKey会去同一个线程,不需要记住之前帖子的线程ID。

您的请求网址将类似于 https://chat.googleapis.com/v1/spaces/AAAAL0vuKXY/messages?key=...&token=...&threadKey=..

于 2020-12-24T06:37:06.340 回答
0

当您发送第一条消息时,您将收到一个响应 json,在此响应中您会收到一个thread属性。threadTou 必须在与文本和/或卡片相同的级别上发送具有此属性的新消息。

public async Task ExecutionStarted(string fileName, string filePath)
        {
            var today = DateTime.Now.ToString("yyyyMMddTHH:mm:ss");
            string json = "{\"text\":\"" + today + ": Processing file " + fileName + " from " + filePath + "\"}";
            if(this.currentThread){
                json.thread = this.currentThread
            }
            await PostToGoogleChat(json);
        }

public async Task PostToGoogleChat(string json)
        {
            HttpClient client = new HttpClient();
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            var result = await client.PostAsync(new Uri(_chatUrl), content);
            this.currentThread = result.thread
        }
于 2020-03-30T20:58:11.183 回答
0

任何 Post 消息响应都将包含在响应负载中。

"thread": {
    "name": "spaces/AAAASchux4w/threads/GgWXNtFDOpE"
}

您需要做的是将此包含在任何希望在同一线程中发送的未来消息中。

{
    "text": "message in the same thread",
    "thread": {
        "name": "spaces/AAAASchux4w/threads/GgWXNtFDOpE"
     }
}
于 2021-05-18T20:42:26.723 回答