c#
var token = await GetUserTokenAsync();
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
using (var content = new StringContent(body, Encoding.UTF8, "application/json"))
{
var postUrl = $"https://graph.microsoft.com/v1.0/groups/{groupId}/threads/{threadId}/reply";
var resp = await client.PostAsync(postUrl, content);
if (resp.StatusCode == HttpStatusCode.NotFound)
{
Console.WriteLine("Info: Retrying post-reply (after 15 seconds), Graph returned 404...");
await Task.Delay(TimeSpan.FromSeconds(15));
resp = await client.PostAsync(postUrl, content);
}
if (resp.StatusCode == HttpStatusCode.NotFound)
{
Console.WriteLine("Info: Graph still says this doesn't exist. Waiting 45 more seconds and trying again...");
await Task.Delay(TimeSpan.FromSeconds(45));
resp = await client.PostAsync(postUrl, content);
}
if (resp.StatusCode == HttpStatusCode.NotFound)
{
Console.WriteLine("Info: Graph is really sure that this doesn't exist, but we'll try again in 60 seconds...");
await Task.Delay(TimeSpan.FromSeconds(60));
resp = await client.PostAsync(postUrl, content);
}
if (!resp.IsSuccessStatusCode)
{
Console.WriteLine($"Error: Unable to post reply to group {groupId} thread {threadId}. The server said {await resp.Content.ReadAsStringAsync()}");
String curlCommand = $"curl -i -X POST -H \"Authorization: Bearer {token}\" -H \"Content-Type: application/json\" -d '{body}' \"{postUrl}\"";
Console.WriteLine($"Try this with curl: {curlCommand}");
}
Console.WriteLine("Posted!");
}
}