WhatsApp ile LogoGo3 RestAPI kullanarak Chatbot Uygulaması Örneği

7 Ocak 2025 Salı

Gerekli Teknolojiler

  1. WhatsApp Business API: WhatsApp ile iletişim için kullanılacak.
  2. Logo Go3 REST API: Müşteri, borç/alacak ve diğer bilgileri sorgulamak için kullanılacak.
  3. C# ve ASP.NET Core: API ve chatbot işlevselliği geliştirmek için.
  4. JWT (JSON Web Token): Kullanıcı kimlik doğrulaması için kullanılabilir.

Ana Adımlar

  1. Kullanıcı Doğrulama: Kullanıcı WhatsApp'tan bir doğrulama kodu alacak.
  2. Seçenek Sunma: Kullanıcı doğrulamadan sonra bilgi seçeneklerini görecek.
  3. Logo Go3 REST API Entegrasyonu: İstenen bilgilerin Logo Go3'den alınması.
  4. 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

  1. Yeni bir ASP.NET Core Web API projesi oluşturun.
  2. 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ışı

  1. Kullanıcı api/chatbot/send-code endpoint'ine telefon numarasını gönderir.
  2. Kullanıcı WhatsApp üzerinden doğrulama kodunu alır ve api/chatbot/verify endpoint'ine doğrulama yapar.
  3. Kullanıcıya bilgi seçenekleri sunulur (api/chatbot/get-options).
  4. 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.

Bunları da beğenebilirsiniz.