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

46 lines
1.5 KiB
C#
Raw Normal View History

2026-02-24 20:44:16 +00:00
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection;
namespace Sozsoft.Sender.WhatsApp;
public interface ISozsoftWhatsAppSender : ITransientDependency
{
2026-10-17 18:51:10 +00:00
Task<SendResult> SendAsync(string To, string Message, string LanguageCode = "tr");
2026-02-24 20:44:16 +00:00
}
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;
}
2026-10-17 18:51:10 +00:00
public async Task<SendResult> SendAsync(string To, string Message, string LanguageCode = "tr")
2026-02-24 20:44:16 +00:00
{
logger.LogInformation("Sending WhatsApp message. {To}, {LanguageCode}, {Message}", To, LanguageCode, Message);
2026-02-24 20:44:16 +00:00
var result = await httpClient.SendMessageAsync(To, Message, LanguageCode);
2026-10-17 18:51:10 +00:00
var message = result?.messages?.FirstOrDefault();
var success = message?.message_status == "accepted";
2026-02-24 20:44:16 +00:00
if (success)
{
logger.LogInformation("WhatsApp sent successfully. {To}, {LanguageCode}, {Message}", To, LanguageCode, Message);
2026-02-24 20:44:16 +00:00
}
else
{
logger.LogWarning("Failed to send WhatsApp message. {To}, {LanguageCode}, {Message}", To, LanguageCode, Message);
2026-02-24 20:44:16 +00:00
}
2026-10-17 18:51:10 +00:00
return new SendResult
2026-02-24 20:44:16 +00:00
{
Success = success,
2026-10-17 18:51:10 +00:00
MessageId = success ? message!.id : null,
2026-02-24 20:44:16 +00:00
};
}
}