sozsoft-platform/api/modules/Sozsoft.Sender/WhatsApp/WhatsAppHttpClient.cs
2026-10-17 21:51:10 +03:00

58 lines
2.2 KiB
C#

using System.Net.Http.Headers;
using Volo.Abp.Settings;
namespace Sozsoft.Sender.WhatsApp;
public interface IWhatsAppHttpClient
{
Task<WhatsAppSendResultDto?> SendMessageAsync(string To, string Message, string LanguageCode = "tr");
}
public sealed class WhatsAppHttpClient : SettingHttpClientBase, IWhatsAppHttpClient
{
public WhatsAppHttpClient(HttpClient httpClient, ISettingProvider settingProvider)
: base(httpClient, settingProvider)
{
}
public async Task<WhatsAppSendResultDto?> SendMessageAsync(string To, string Message, string LanguageCode = "tr")
{
var url = await GetSettingAsync(WhatsAppSettingNames.Url);
var templateName = await GetSettingAsync(WhatsAppSettingNames.TemplateName);
var token = await GetSettingAsync(WhatsAppSettingNames.Token);
var phoneId = await GetSettingAsync(WhatsAppSettingNames.PhoneNumberId);
return await PostJsonAsync<WhatsAppSendResultDto>(
$"{url}/{phoneId}/messages",
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
}
]
}
]
}
},
request => request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token));
}
}