58 lines
2.2 KiB
C#
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));
|
|
}
|
|
}
|