Bir Uygulama Değil, Bir WhatsApp Chatbotu Oluşturun

Yayınlanan: 2022-03-11

Uzun zaman önce bir kuruluş için bir web uygulaması geliştirdim (200k+ çalışan). Web uygulamasıyla ilgili geri bildirim, bir deney yapmamı istedi. Belirli kullanım durumunu çözmek için bir web uygulaması yerine bir WhatsApp sohbet robotu oluştursaydım ne olurdu? İnsanlar bunu daha mı çok isterdi? Daha faydalı olur mu?

Ama hikaye bundan çok daha büyük. Chatbotların çok fazla potansiyeli var! Bu WhatsApp sohbet botu eğitiminde, öğrenme yolculuğumu, keşfettiğim en iyi uygulamaları ve uygulama ile sohbet botu arasındaki tahminlerimi paylaşmak istedim. Ve ötesi: Bir gün sohbet robotları tüm geleneksel uygulamaların yerini alacak mı?


Çalıştığım şirketin Tel Aviv şehir merkezinin ortasında yaklaşık 2.000 çalışanı olan bir ofisi vardı. Park alanı çok sınırlıdır, bu nedenle insanlar, bir arabanın diğerini engellediği çift park için kasıtlı olarak tasarlanmış alanlara park eder. Her çift park yerinde, ilk sürücü içeriye, ikinci sürücü dışarıya park eder.

Beyaz Tahtadan Web Uygulamasına

Bir uygulamadan önce büyük bir tahta vardı. Tüm sürücüler nereye park ettiklerini, isimlerini ve telefon numaralarını işaretlediler. Bir sürücü ofisten ayrılmadan önce, birinin arabasını bloke edip etmediğini kontrol etmek zorunda kaldı. Eğer öyleyse, diğer sürücüyü aramaları ve bir toplantının ortasında olmadıklarını ummaları gerekir, böylece gidip arabalarını yoldan çekebilirlerdi.

Süreci daha iyi hale getirmek için bir web uygulaması oluşturdum.

Orijinal web uygulaması konsepti, sayılar ve bazen isimlerle birlikte iç ve dış çift park alanlarının sıralarını gösteriyor. Adı olanlar mavi, adı olmayanlar yeşildir.

Basitti. Arka uç yok. Sunucu barındırma yok. Veritabanı bakımı yok. Herhangi bir UI çerçevesi bile yok. Web paketi ve JS paketi yok! Sadece vanilya JavaScript'i.

GitHub'ın ücretsiz statik sayfa barındırma hizmeti kullanılarak barındırıldı. Veritabanı FireBase'di, bu nedenle gerçek zamanlı desteğimiz ve JSON desteğimiz vardı ve bir arka uca gerek yoktu.

Kullanıcı arayüzü basitti. Kullanıcılar tüm park yerlerini görecek ve ayrıntılarını doldurmak için boş olana tıklayacaktı. Zaten park etmişlerse, verileri tarayıcının yerel deposundan alırdı. Kayıtlı bir yuvaya tıkladıklarında, ilgili iletişim bilgilerini görebilir ve sürücüyü aramayı seçebilirler.

Neredeyse bir yıldır harika çalışıyordu. Bir günden daha kısa sürede geliştirme, birçok insan için yardımcı oldu ve zamandan tasarruf sağladı - iyi bir yatırım.

Web Uygulamasından Chatbot'a

Bir gün Facebook, WhatsApp için bir API yayınlayacaklarını duyurdu. Ertesi gün ağabeyim, içinde Alexa bulunan bir Amazon Echo satın aldı. O sıralarda Google Asistan'ı da her yerde görmeye başladım.

Belki de dünyanın sohbet robotlarına doğru ilerlediğini düşünmeye başladım, bu yüzden denemeliyim. Kullanıcılar sohbet robotlarını kullanmayı tercih eder mi? Daha az destek vermem gerekir mi? Sadece farklı altyapılardan yararlanarak yeni meta özellikler sunabilir mi?

Normal web uygulamasıyla ilgili bazı geri bildirimler aldım ve bir WhatsApp sohbet robotu oluşturursam bu sorunu çözebileceğine inandım:

  • Uygulama bazı eski cep telefonlarında iyi çalışmadı.
  • Yeraltında çalışmıyordu (parkın olduğu yerde - orada iyi bir mobil sinyal yok).
  • Sürücüler, telefon çeviriciyi açmak yerine engelleyicilere mesaj göndermek istedi.
  • Sürücüler, her seferinde ayrılmadan önce web uygulamasını açmak yerine, biri onları engelliyorsa anında bildirim almak istedi.

Telegram veya WhatsApp gibi sohbet platformlarının geliştiricilerinin, uygulamalarının kararlılığını sağlamak için yıllarca gece gündüz çalıştığını hatırlamak önemlidir. Kaynaklarını kullanarak ve soruları yanıtlamak için yalnızca küçük bir motor geliştirerek, bu, sürdürülebilirliğin zorlu işini sohbet platformu geliştiricilerine bırakacaktır. Tek yapmam gereken, WhatsApp sohbet robotunun nasıl yapıldığını araştırmaktı.

Yeni park asistanı sohbet robotunu geliştirmeye başladıktan hemen sonra, fikrin ne kadar harika olduğunu anladım. Yeni özellikler eklemek çok kolay ve hızlıydı ve uçtan uca test yapmama bile gerek yoktu.

Sinyal yok? Sorun yok.

Cıvıldamak

Sadece bu da değil, artık karmaşık bir CI/CD işlemine ihtiyacım yoktu. Bir sohbet emülatöründe çalışıyorsa, her yerde çalışır. .apk yok, Xcode yok, App Store veya Google Play yok. Chatbot, cihazları kaydetmeme, push bildirimleri için PubSub veya benzeri hizmetleri kullanmama veya kullanıcı belirteçlerini kaydetmeme gerek kalmadan kullanıcılara mesaj gönderebildi. Kimlik doğrulama sistemine gerek yok—Kimlik olarak kullanıcının telefon numarasını kullanıyordum.

Sinyal yok? Sorun yok. Bildirim dosyalarını kullanarak çevrimdışı destek eklememe gerek yoktu: WhatsApp bunu bana kutunun dışında verdi. Kullanıcı, wifi'nin daha iyi olduğu bir üst seviyeye geçtiğinde, mesaj çok yakında çıkacaktı.

Sonra fark ettim ki, bir sohbet platformu yeni bir özellik sunduğunda, uygulamamın bundan hemen yararlanacağını anladım. Vay canına—şimdi bu gerçekten iyi bir yatırım. (Adil olmak gerekirse, yeni özelliklerin işlevselliği sınırlaması veya daha fazla geliştirme çabası gerektiren yıkıcı değişiklikler oluşturması riski de vardır, bu nedenle iş açısından kritik görevleri uygulamadan önce dikkatlice düşünün).

Bir Prototip WhatsApp Chatbot olan Park Asistanı Yazma

Bir WhatsApp sohbet robotu oluşturmak için ilk zorluk, WhatsApp'tan programınıza mesaj almaktır. Bulduğum en basit çözüm, paylaşılan bir Twilio telefon numarası kullanmak. Bu yalnızca geliştirme içindir; üretime geçerken geliştiriciler özel bir telefon numarası kullanmak isteyecektir.

Twilio'nun ücretsiz numaralarının her biri birçok Twilio kullanıcısıyla paylaşılır. Bir uygulamanın son kullanıcılarını diğer Twilio kullanıcılarının uygulamalarından ayırt etmek için, son kullanıcıların sohbet robotuna önceden tanımlanmış bir mesaj göndermesi gerekir.

Bir kullanıcı paylaşılan numaraya özel bir mesaj gönderdikten sonra, numarasından gelen tüm mesajlar Twilio hesabınıza ve web kancalarına yönlendirilecektir. Bu nedenle üretimde özel bir numaraya ihtiyaç duyulur; belirli bir kullanıcının belirli bir paylaşılan numarada yalnızca bir uygulamayı kullanmak isteyeceğinin garantisi yoktur.

WhatsApp Mesajları Gönderme

Twilio'nun “Programlanabilir SMS Panosu”nda, sol taraftaki gezinme çubuğunda bir “WhatsApp Beta” bağlantısı var:

Twilio'nun "Programlanabilir SMS Panosu"nun, son mesajların bir grafiğini ve son hata ve uyarıların başka bir grafiğini gösteren bir ekran görüntüsü. Gezinme çubuğundaki dördüncü seçenek "WhatsApp Beta"dır.

Bunu tıklayan geliştiriciler, "Sandbox" seçeneğinin bulunduğu bir sayfa göreceklerdir.

Belirli bir numaraya özel bir WhatsApp mesajının gönderilmesini bekleyen Twilio'nun WhatsApp sanal alanının kurulum adımının ekran görüntüsü.

Kullanıcıları ilişkilendirmek için Twilio'nun sağladığı numaraya özel bir mesaj göndermeleri gerekecek. Kullanıcılar bunu yaptıktan sonra, Twilio aracılığıyla onlara mesaj göndermeye başlayabilir ve onlardan gelen mesajları işleyebiliriz.

İşte cURL kullanarak mesaj göndermeye bir örnek:

 curl 'https://api.twilio.com/2010-04-01/Accounts/{user_account}/Messages.json' -X POST \ --data-urlencode 'To=whatsapp:+{to_phone_number}' \ --data-urlencode 'From=whatsapp:+{from_phone_number}' \ --data-urlencode 'Body={escaped_message_body}' \ -u {user_account}:user_token

Bu basit bir metin mesajıdır. Ancak mesajlarınıza medya (resim vb.) de ekleyebilirsiniz. İşte bir Node.js örneği:

 function sendWhatsApp(to, body, media) { const auth = "twilio_clientid:twilio_api" const sendURL = "https://api.twilio.com/2010-04-01/Accounts/{account_id}/Messages.json" const res = await fetch(sendURL, { headers: { Authorization: "Basic " + Buffer.from(auth).toString("base64"), }, method: "POST", body: objToFORM( JSONRemoveUndefined({ To: "whatsapp:+972" + to.replace(/-/g, "").replace(/^0/, ""), From: "whatsapp:+18454069614", Body: body, MediaUrl: media, }), ), }) } function objToFORM(obj) { const params = new URLSearchParams() for (var a in obj) { params.append(a, obj[a]) } return params } function JSONRemoveUndefined(obj) { return JSON.parse(JSON.stringify(obj)) }

İşte bu: Artık müşterilere mesaj göndermeye başlayabiliriz! Ancak WhatsApp mesajlarının en önemli iki teknik sınırlamasını hatırlamak önemlidir:

  1. Bot bir mesaj aldığında, ücretsiz olarak bir metin yanıtı gönderebilirsiniz. Bundan fazlası paraya mal olur.
  2. Bot, kullanıcılara yalnızca bir kullanıcıdan mesaj aldığında başlayan 24 saatlik süre içinde mesaj gönderebilir. Bu pencerenin dışında, bot, daha sonra göreceğimiz gibi, yalnızca onaylanmış şablonları kullanarak mesaj gönderebilir.

WhatsApp Mesajlarını Alma

Mesaj göndermek oldukça kolaydı, ancak mesajları almak ve işlemek daha da kolay.

"WhatsApp için Twilio Sandbox" sayfasının ekran görüntüsü. Korumalı Alan Yapılandırması bölümünde, "bir mesaj geldiğinde" ve "durum geri arama URL'si" için iki uç nokta URL alanı bulunur. Sandbox Katılımcıları bölümü, kullanıcı kimliklerini ("whatsapp:" ve ardından bir telefon numarası biçiminde) listeler ve özel bir mesaj göndererek arkadaşları sandbox'a nasıl davet edeceğiniz konusunda öncekiyle aynı talimatlara sahiptir.

Twilio'nun "korumalı alan" sayfasında geliştiriciler, Twilio'nun paylaşılan WhatsApp numarasında aldığı mesajları nereye göndermesi gerektiğini tanımlayabilir. Geliştirme sırasında, Ngrok veya Serveo gibi hizmetler, yerel geliştirici makinelerine giden genel URL'ler sağlayabilir.

Twilio WhatsApp mesajları şöyle görünür:

 { "NumMedia": "0", "SmsSid": "{sms_id}", "SmsStatus": "received", "Body": "Example Message from user", "To": "whatsapp:+{phone_number}", "NumSegments": "1", "MessageSid": "{message_sid}", "AccountSid": "{account_sid}", "From": "whatsapp:+{phone_number}", "ApiVersion": "2010-04-01" }

İhtiyacımız olan tek şey bu. Bu mesajı almak, ayrıştırmak ve kullanıcıların ne istediğini anlamaya çalışmak için herhangi bir programlama dilini kullanabiliriz. Bu muhtemelen bir veritabanında bazı CRUD işlemleriyle sonuçlanacaktır, bundan sonra bot kullanıcıya yanıtında uygun bilgileri (veya başarı/başarısız mesajını) iletebilir. Bunlar bir WhatsApp sohbet robotunun nasıl oluşturulacağının temelleri.

Mesaj Şablonları

Daha önce de belirtildiği gibi, sohbet robotları yalnızca “şu anda” onlarla etkileşimde bulunan kullanıcılara, yani 24 saatlik zaman diliminde serbest stil mesajlar gönderebilir. Ancak yeni kullanıcılara veya pencerenin dışına mesaj göndermek istiyorsanız, önceden onaylanmış mesaj şablonlarını kullanmalısınız. Bu spam önlemek içindir.

Kullanım durumumda, birileri onları engellediğinde, sohbet botunun kullanıcısı olmasalar bile sürücüleri güncellemek istedim. Twilio'da “gönderen” ve “yapılandır” a tıklayın.

Twilio'nun "WhatsApp Etkin Gönderenler" sayfasının ekran görüntüsü, liste numaraları, işletme görünen adları ve durumları (listelenenlerden biri Onaylandı, diğeri "WhatsApp'tan Onay Bekleniyor" olarak işaretlenmiştir).

Bu benim seçtiğim şablon:

 {{1}} is blocking your exit from the parking lot. I will notify you when they leave.

Birkaç gün sonra Facebook şablonumu onayladı ve bu mesajları sadece chatbot'a mesaj gönderen sürücülere değil, WhatsApp'ı olan herkese göndermeye başlayabildim.

Bir şablondan mesaj göndermek, aynı API'yi kullanarak normal bir mesaj göndermek gibidir. WhatsApp, bir şablonla eşleştiğini otomatik olarak görür ve mesajı onaylar.

Sadece Park Asistanı İçin Değil

Bir çevrimiçi mağaza hayal ettiğimde bu strateji benim için heyecan verici: Belki bir gün insanlar sohbet robotlarını kullanarak her şeyi satın alabilirler. WhatsApp mesajları göndermek ve resim eklemek kadar kolay olurdu. Kullanıcıların her WhatsApp mesajına gerçek para ekleyebildiklerini hayal edin. Bir şeyler satın almak çok basit olurdu. Kullanıcılar, bir tedarikçinin sohbet robotuyla konuşarak herhangi bir şeyi kolayca satın alabilirler.

Waze veya Google Haritalar'ın yerini alan bir sohbet robotu hayal edin. Hedefinizin bir metin mesajını gönderirsiniz. Chatbot platformu konumunuzu izliyor ve chatbot size navigasyonun gerçek zamanlı konuşulan yönü ile otomatik olarak oynayan kayıtlı bir mesaj gönderiyor.

Fantezi değil. WhatsApp şu anda gerçek zamanlı konum paylaşımını desteklemektedir; tek ihtiyaçları alınan mesajları otomatik oynatma seçeneği ve işte bu.

Gett veya Uber uygulamaları yerine bir Waze sohbet robotu veya bir taksi sohbet robotu düşünün. Nerede olduğunuzu söyleyen bir mesaj gönderiyorsunuz, ardından taksi geliyor ve WhatsApp'ı kullanarak ödeme yapıyorsunuz. Çok basit.

Bazı okuyucular, "Kullanıcılar sadece yazmayı değil, grafik arayüzleri tercih etmiyor mu?" diye düşünüyor olabilir. Chatbot platformlarının, chatbot sahibine dönüşüm sırasında düğmeler, resimler ve saf HTML kutuları gönderme seçeneği sunacağına inanıyorum. Facebook, Messenger için Webview'i zaten destekliyor. Kullanıcıların herhangi bir şey yüklemelerine gerek yok, sadece tercih ettikleri anlık mesajlaşma uygulamasını kullanın.

Bu avantajlar, geliştiricilerin, yanlış bilgilerin yayılmasını engellemeye yardımcı olmak için koronavirüs pandemisi hakkında anında yetkili cevaplar vermek gibi önemli görevleri yerine getirmek için WhatsApp sohbet robotları oluşturmaya çalışmasının nedenidir.

TL; DR: Web Uygulamalarını Sohbet Robotlarına Taşıma Hakkında 7 Sonuç

Özetle:

  • Çoğu zaman, bir sohbet robotu geliştirmek, geliştirme süresini önemli ölçüde kısaltabilir, çünkü grafiksel bir kullanıcı arayüzü tasarlamaya ve planlamaya gerek yoktur. (Bununla birlikte, başkalarının hatalarından ders almak için başlamadan önce chatbot UX tasarımının daha ince noktalarına bakmaya değer.)
  • Chatbotlara yeni özellikler eklemek çok daha kolay. Geliştiricilerin mevcut öğeleri yeniden tasarlamasına veya değiştirmesine gerek yoktur. Chatbot'un sadece yeni mesaj türünü anlamaya başlaması gerekiyor.
  • Chatbot'lara, özel ihtiyaçları olan kişiler için varsayılan olarak çok daha erişilebilir.
  • Platformlar arası bir çözümü özelleştirmenize gerek yok. Chatbot platformu bunu zaten yapıyor.
  • Kullanıcılar, bilgi paylaşımı için sohbet robotlarına çok daha fazla güveniyor. İzin istemenize veya uyarı göstermenize gerek yoktur - örneğin, kullanıcı galerisinden bir resim seçip sohbet robotunuza gönderebilir - resim galerisine erişim izni sohbet platformuna zaten verilmiştir.
  • Sohbet platformları, push bildirimlerini yönetmeyi kolaylaştırır. Anında iletme bildirimleri, kullanıcıların unuttuğu uygulamalar ile kullanıcıların düzenli olarak etkileşimde bulunduğu uygulamalar arasındaki farkı yaratan şeydir.
  • Sohbet platformları, sizin için çevrimdışı ve çevrimiçi koşullar arasında geçişi gerçekleştirir.

WhatsApp Chatbot Nasıl Oluşturulur: Ayrılık Önerisi ve En İyi Uygulamalar

Chatbot yazmanın faydaları oldukça açık. Bir tane oluşturmaya hazır olan geliştiricilerin, bir mesajı anlayan bir sohbet robotuyla küçükten başlamaları önerilir. Ve iyi idare eder.

Chatbotlar kısa mesajlara bağlı kalmalıdır. İnsanlar uzun mesajları okumazlar. Kısa ve öz bir şekilde ifade edilemeyen gönderilecek önemli bir şey olduğunda, mesajları birkaç küçük mesaja bölmek daha iyidir.

Kişiliğe sahip sohbet robotları daha iyi alınır. "Sistem mesajı formalitesi" yaklaşımıyla karşılaştırıldığında, minimum düzeyde bir "insan konuşması" bile uzun bir yol kat eder: "Veritabanı güncellendi" yerine "Park haritasını sizin için güncelleyeceğim". Bir sohbet robotu, kullanıcının anlayamayabilecekleri teknik işlemleri gerçekleştiren bir kara kutu yerine, kullanıcıya hizmet etmek için orada olan bir makine olduğu hissini kullanıcıya bırakmalıdır.

Bu WhatsApp sohbet robotu öğreticisi, kullanıcıların sohbet robotlarına göndereceği doğal dildeki mesajları ayrıştırmanın özelliklerine girmedi. Ancak, sohbet robotu geliştirme hizmetlerine hevesli sağlayıcılar, bu yönün nasıl çalıştığına dair bir fikir edinmek için WhatsApp Park Asistanı botunun (özellikle kullanıcıdan gelen istekleri eylem olarak kabul eden hackparkDialogFlow.ts ) kaynak kodunu inceleyebilir.

Programlamaya bağımlılık ekleme yaklaşımını takip ederken farklı türde kullanıcı mesajlarının nasıl algılanacağı hakkında daha ayrıntılı bir makale için Toptal'ın TypeScript sohbet robotu eğitimine bakın.

Kendi WhatsApp sohbet robotu geliştirmenizde bol şans!