WhatsApp ile LogoGo3 RestAPI kullanarak Chatbot Uygulaması Örneği
WhatsApp Chatbot uygulamasını geliştirmek için C# kullanarak bir REST API entegrasyonu ve WhatsApp Business API'nin kullanılması gerekiyor. Bu süreçte aşağıdaki adımları gerçekleştireceğiz.
Gerekli Teknolojiler
- WhatsApp Business API: WhatsApp ile iletişim için kullanılacak.
- Logo Go3 REST API: Müşteri, borç/alacak ve diğer bilgileri sorgulamak için kullanılacak.
- C# ve ASP.NET Core: API ve chatbot işlevselliği geliştirmek için.
- JWT (JSON Web Token): Kullanıcı kimlik doğrulaması için kullanılabilir.
Ana Adımlar
- Kullanıcı Doğrulama: Kullanıcı WhatsApp'tan bir doğrulama kodu alacak.
- Seçenek Sunma: Kullanıcı doğrulamadan sonra bilgi seçeneklerini görecek.
- Logo Go3 REST API Entegrasyonu: İstenen bilgilerin Logo Go3'den alınması.
- WhatsApp Mesaj Gönderimi: Kullanıcıya yanıtların gönderilmesi.
Örnek C# Kod
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
- Yeni bir ASP.NET Core Web API projesi oluşturun.
- Gerekli NuGet paketlerini yükleyin:
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; }
}
}
Uygulama Çalışma Akışı
- Kullanıcı
api/chatbot/send-codeendpoint'ine telefon numarasını gönderir. - Kullanıcı WhatsApp üzerinden doğrulama kodunu alır ve
api/chatbot/verifyendpoint'ine doğrulama yapar. - Kullanıcıya bilgi seçenekleri sunulur (
api/chatbot/get-options). - Kullanıcı bir seçenek seçer ve Logo Go3 API çağrısı yapılarak istenen bilgi alınır.
Ek Notlar
- WhatsApp Business API için gerekli yapılandırmayı sağlayın (örn. Meta Business Suite kullanımı).
- Logo Go3 REST API entegrasyonu için gerekli API anahtarlarını ve endpoint bilgilerini alın.
- Daha güvenli bir kimlik doğrulama mekanizması (örneğin JWT) eklenebilir.