sozsoft-platform/api/modules/Sozsoft.Sender/WhatsApp/WhatsAppHttpClient.cs

59 lines
2.2 KiB
C#
Raw Normal View History

2026-02-24 20:44:16 +00:00
using System.Net.Http.Headers;
using Volo.Abp.Settings;
namespace Sozsoft.Sender.WhatsApp;
public interface IWhatsAppHttpClient
{
2026-10-17 18:51:10 +00:00
Task<WhatsAppSendResultDto?> SendMessageAsync(string To, string Message, string LanguageCode = "tr");
2026-02-24 20:44:16 +00:00
}
2026-10-17 18:51:10 +00:00
public sealed class WhatsAppHttpClient : SettingHttpClientBase, IWhatsAppHttpClient
2026-02-24 20:44:16 +00:00
{
2026-10-17 18:51:10 +00:00
public WhatsAppHttpClient(HttpClient httpClient, ISettingProvider settingProvider)
: base(httpClient, settingProvider)
2026-02-24 20:44:16 +00:00
{
}
2026-10-17 18:51:10 +00:00
public async Task<WhatsAppSendResultDto?> SendMessageAsync(string To, string Message, string LanguageCode = "tr")
2026-02-24 20:44:16 +00:00
{
2026-10-17 18:51:10 +00:00
var url = await GetSettingAsync(WhatsAppSettingNames.Url);
var templateName = await GetSettingAsync(WhatsAppSettingNames.TemplateName);
var token = await GetSettingAsync(WhatsAppSettingNames.Token);
var phoneId = await GetSettingAsync(WhatsAppSettingNames.PhoneNumberId);
2026-02-24 20:44:16 +00:00
2026-10-17 18:51:10 +00:00
return await PostJsonAsync<WhatsAppSendResultDto>(
$"{url}/{phoneId}/messages",
2026-02-24 20:44:16 +00:00
new WhatsAppPostMessageInput
{
messaging_product = "whatsapp",
to = To,
type = "template",
template = new WhatsAppPostMessageInput.Template
{
name = templateName,
language = new WhatsAppPostMessageInput.Template.Language
{
code = LanguageCode
},
components =
[
new WhatsAppPostMessageInput.Template.Component
{
type = "body",
parameters =
[
new WhatsAppPostMessageInput.Template.Component.Parameter
{
type = "text",
text = Message
}
]
}
]
}
2026-10-17 18:51:10 +00:00
},
request => request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token));
2026-02-24 20:44:16 +00:00
}
}