当邮件涉及正在处理的同一文件时,我正在尝试使用webhooks在同一线程中向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);
}
答案 0 :(得分:0)
为了响应线程,您必须在调用的URL中包含线程标识符。线程标识符是parent
参数的一部分(请参见spaces.message.create
)。
当您从Webhook获取消息时(请参见:message resource,您可以从其保存的thread
属性中获取发布该消息的线程)。然后,在创建消息时,您只需要发送此确切线程的名称(它的标识符,应类似于spaces/AAAAMpdlehY/threads/UMxbHmzDlr4
)作为消息父。
答案 1 :(得分:0)
发送第一条消息时,您将收到一个响应json,在此响应中,您将收到一个thread
属性。您必须使用此thread
属性在与文本和/或卡片相同级别上发送新消息。
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
}
答案 2 :(得分:0)
任何 Post 消息响应都将包含在响应负载中。
"thread": {
"name": "spaces/AAAASchux4w/threads/GgWXNtFDOpE"
}
您需要做的是在以后希望在同一线程中发送的任何消息中包含此内容。
{
"text": "message in the same thread",
"thread": {
"name": "spaces/AAAASchux4w/threads/GgWXNtFDOpE"
}
}