7 Ocak 2025 Salı
Aşağıda temel bir ASP.NET Core uygulaması ile WhatsApp ve Logo Go3 REST API entegrasyonu için bir başlangıç kodu örneği verilmiştir.
Proje Kurulumu
RestSharp
(API çağrıları için)Twilio
(WhatsApp API için - Alternatif olarak Meta'nın WhatsApp Cloud API kullanılabilir)ASP .NET Core Ugyulamamıza hazırlayacağımız Controllers kodu aşağıdadır.
using Microsoft.AspNetCore.Mvc;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace WhatsAppChatbot.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class ChatbotController : ControllerBase
{
// Kullanıcı doğrulama için basit bir in-memory storage
private static Dictionary<string, string> userVerificationCodes = new Dictionary<string, string>();
private const string LogoApiBaseUrl = "https://api.logo.com.tr/go3"; // Logo Go3 Base URL
// Kullanıcı doğrulama kodu gönderme
[HttpPost("send-code")]
public IActionResult SendVerificationCode([FromBody] string phoneNumber)
{
string verificationCode = new Random().Next(1000, 9999).ToString();
userVerificationCodes[phoneNumber] = verificationCode;
// WhatsApp mesaj gönderimi (örnek WhatsApp API entegrasyonu)
SendWhatsAppMessage(phoneNumber, $"Doğrulama kodunuz: {verificationCode}");
return Ok("Doğrulama kodu gönderildi.");
}
// Doğrulama kontrolü
[HttpPost("verify")]
public IActionResult VerifyCode([FromBody] VerifyRequest request)
{
if (userVerificationCodes.TryGetValue(request.PhoneNumber, out string code) && code == request.Code)
{
return Ok("Doğrulama başarılı.");
}
return BadRequest("Doğrulama başarısız.");
}
// Seçenek sunma
[HttpPost("get-options")]
public IActionResult GetOptions([FromBody] string phoneNumber)
{
var options = new List<string>
{
"1. Toplam Cari Borç",
"2. Toplam Cari Alacak",
"3. Satış Siparişi Durumu",
"4. Satış Faturası"
};
SendWhatsAppMessage(phoneNumber, "Lütfen bir seçenek seçin:\n" + string.Join("\n", options));
return Ok("Seçenekler gönderildi.");
}
// Logo Go3 API'den bilgi alma
[HttpGet("get-info/{option}")]
public async Task<IActionResult> GetInfo(string option, [FromQuery] string phoneNumber)
{
string resultMessage;
switch (option)
{
case "1":
resultMessage = await GetCariBorç();
break;
case "2":
resultMessage = await GetCariAlacak();
break;
case "3":
resultMessage = await GetSatışSiparişiDurumu();
break;
case "4":
resultMessage = await GetSatışFaturası();
break;
default:
return BadRequest("Geçersiz seçenek.");
}
SendWhatsAppMessage(phoneNumber, resultMessage);
return Ok("Bilgi gönderildi.");
}
// Logo Go3 API çağrısı (örnek)
private async Task<string> GetCariBorç()
{
var client = new RestClient($"{LogoApiBaseUrl}/cari-borc");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer YOUR_API_TOKEN");
var response = await client.ExecuteAsync(request);
return response.Content ?? "Cari borç bilgisi alınamadı.";
}
private async Task<string> GetCariAlacak()
{
var client = new RestClient($"{LogoApiBaseUrl}/cari-alacak");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer YOUR_API_TOKEN");
var response = await client.ExecuteAsync(request);
return response.Content ?? "Cari alacak bilgisi alınamadı.";
}
private async Task<string> GetSatışSiparişiDurumu()
{
var client = new RestClient($"{LogoApiBaseUrl}/satis-siparis");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer YOUR_API_TOKEN");
var response = await client.ExecuteAsync(request);
return response.Content ?? "Satış siparişi durumu alınamadı.";
}
private async Task<string> GetSatışFaturası()
{
var client = new RestClient($"{LogoApiBaseUrl}/satis-fatura");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer YOUR_API_TOKEN");
var response = await client.ExecuteAsync(request);
return response.Content ?? "Satış faturası bilgisi alınamadı.";
}
// WhatsApp mesaj gönderimi (örnek)
private void SendWhatsAppMessage(string phoneNumber, string message)
{
// Twilio veya WhatsApp Cloud API entegrasyonu yapılmalı
Console.WriteLine($"Mesaj gönderildi: {phoneNumber} -> {message}");
}
}
public class VerifyRequest
{
public string PhoneNumber { get; set; }
public string Code { get; set; }
}
}
api/chatbot/send-code
endpoint'ine telefon numarasını gönderir.api/chatbot/verify
endpoint'ine doğrulama yapar.api/chatbot/get-options
).