45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using Volo.Abp.DependencyInjection;
|
|
|
|
namespace Sozsoft.Sender.WhatsApp;
|
|
|
|
public interface ISozsoftWhatsAppSender : ITransientDependency
|
|
{
|
|
Task<SendResult> SendAsync(string To, string Message, string LanguageCode = "tr");
|
|
}
|
|
|
|
public class SozsoftWhatsAppSender : ISozsoftWhatsAppSender
|
|
{
|
|
private readonly IWhatsAppHttpClient httpClient;
|
|
private readonly ILogger<SozsoftWhatsAppSender> logger;
|
|
|
|
public SozsoftWhatsAppSender(
|
|
IWhatsAppHttpClient httpClient,
|
|
ILogger<SozsoftWhatsAppSender> logger)
|
|
{
|
|
this.httpClient = httpClient;
|
|
this.logger = logger;
|
|
}
|
|
|
|
public async Task<SendResult> SendAsync(string To, string Message, string LanguageCode = "tr")
|
|
{
|
|
logger.LogInformation("Sending WhatsApp message. {To}, {LanguageCode}, {Message}", To, LanguageCode, Message);
|
|
var result = await httpClient.SendMessageAsync(To, Message, LanguageCode);
|
|
var message = result?.messages?.FirstOrDefault();
|
|
var success = message?.message_status == "accepted";
|
|
if (success)
|
|
{
|
|
logger.LogInformation("WhatsApp sent successfully. {To}, {LanguageCode}, {Message}", To, LanguageCode, Message);
|
|
}
|
|
else
|
|
{
|
|
logger.LogWarning("Failed to send WhatsApp message. {To}, {LanguageCode}, {Message}", To, LanguageCode, Message);
|
|
}
|
|
|
|
return new SendResult
|
|
{
|
|
Success = success,
|
|
MessageId = success ? message!.id : null,
|
|
};
|
|
}
|
|
}
|