Juba ammu ehitasin ettevõttele (200 000+ töötajat) veebirakenduse. Veebirakenduse tagasiside ajendas mind katset tegema. Mis juhtuks, kui peaksin looma WhatsAppi jututuba konkreetse kasutusjuhtumi lahendamiseks veebirakenduse asemel? Kas inimestele meeldiks see paremini? Kas sellest oleks rohkem kasu?
Kuid lugu on sellest palju suurem. Juturobotitel on nii palju potentsiaali! Selles WhatsAppi vestlusroboti õpetuses tahtsin jagada oma õppereisi, avastatud parimaid tavasid ja oma prognoose rakenduse ja chatboti küsimuses. Ja kaugemale: kas vestlusrobotid asendavad ühel päeval kõik traditsioonilised rakendused?
Ettevõttel, kus töötasin, oli Tel Avivi kesklinna keskel umbes 2000 töötaja kontor. Parkimiskoht on väga piiratud, nii et inimesed parkivad tahtlikult topeltparkimiseks mõeldud kohtadesse, kus üks auto blokeerib teist. Igas topeltparkimiskohas pargib esimene autojuht sisse ja teine väljapoole.
Enne rakenduse olemasolu oli suur tahvel. Kõik autojuhid märkisid oma parkimiskoha, oma nimed ja telefoninumbrid. Enne kontorist lahkumist pidi juht kontrollima, kas keegi blokeerib nende autot. Kui jah, peaksid nad helistama teisele autojuhile ja lootma, et nad pole keset koosolekut, et saaksid minna oma autot teelt välja viima.
Protsessi paremaks muutmiseks lõin veebirakenduse.
See oli lihtne. Tagumist otsa pole. Pole serverimajutust. Ei mingit andmebaasi hooldust. Isegi mitte ühtegi kasutajaliidese raamistikku. Pole ühtegi veebipaketti ega ühtegi JS-i kimpu! Lihtsalt vanilje JavaScripti.
Selle hostimiseks kasutati GitHubi tasuta staatiliste lehtede hostimist. Andmebaasiks oli FireBase, nii et meil oli reaalajas tugi ja JSON-tugi ning selle taga ei olnud vajadust.
Kasutajaliides oli lihtne. Kasutajad näeksid kõiki parkimiskohti ja klõpsaksid oma andmete täitmiseks tühjal. Kui need olid juba pargitud, võtaks see andmed brauseri kohalikust salvestusruumist. Kui nad klõpsavad registreeritud pesal, näevad nad asjakohaseid kontaktandmeid ja saavad helistada juhile.
See töötas suurepäraselt peaaegu aasta. Vähem kui üks arengupäev aitas ja säästis paljude inimeste jaoks aega - hea investeering.
Ühel päeval teatas Facebook, et kavatsevad välja anda WhatsAppi API. Järgmisel päeval ostis mu vend Amazon Echo, kus osales Alexa. Umbes sel ajal hakkasin kõikjal nägema ka Google'i abimeest.
Hakkasin mõtlema, et võib-olla liigub maailm vestlusrobotite poole, nii et peaksin katsetama. Kas kasutajad eelistaksid kasutada vestlusroboteid? Kas ma peaksin vähem toetama? Kas see tutvustaks uusi metafunktsioone lihtsalt erinevate infrastruktuuride abil?
Sain tavalise veebirakenduse kohta tagasisidet ja uskusin, et see võib sellega tegeleda, kui looin WhatsAppi vestlusroboti:
Oluline on meeles pidada, et see meeldib vestlusplatvormide arendajatele Telegramm või WhatsApp oli aastaid töötanud päevi ja öid, et tagada nende rakenduste stabiilsus. Kasutades nende ressursse ja arendades küsimustele vastamiseks vaid väikest mootorit, jätaks see kõvasti hooldatavuse töö vestlusplatvormi arendajatele. Pidin vaid uurima, kuidas teha WhatsAppi vestlusroboti.
Kohe pärast seda, kui hakkasin uut parkimisabilise vestlusroboti arendama, mõistsin, kui fantastiline idee see oli. Uute funktsioonide lisamine oli nii lihtne ja kiire ning mul polnud isegi vaja otsast-lõpuni testimist teha.
Pole signaali? Pole probleemi.
Piiksuma
Vähe sellest, ma ei vajanud enam keerukat CI / CD protsessi. Kui see töötab vestlusemulaatoris, toimiks see kõikjal. Ei .apk
, pole Xcode'i, pole App Store'i ega Google Playd. Juturobot suutis kasutajatele sõnumeid saata, ilma et mul oleks vaja seadmeid registreerida, PubSubi või muid sarnaseid teenuseid tõukemärguannete jaoks kasutada või kasutajamärke salvestada. Autentimissüsteemi pole vaja - kasutasin tuvastamiseks kasutaja telefoninumbrit.
Pole signaali? Pole probleemi. Mul ei olnud vaja manifestifailide abil võrguühenduseta tuge lisada: WhatsApp andis selle mulle karbist välja. Sõnum kustub piisavalt kiiresti, kui kasutaja läheb kõrgemale tasemele, kus wifi oli parem.
Siis sain aru, et iga kord, kui vestlusplatvorm võtab kasutusele uue funktsiooni, on minu rakendusel sellest kohe kasu. Vau - nüüd on see tõesti hea investeering. (Aususe huvides on ka oht, et uued funktsioonid võivad piirata funktsionaalsust või luua murettekitavaid muudatusi, mis nõuavad rohkem arendustegevust, nii et mõelge enne ärikriitiliste ülesannete täitmist hoolikalt läbi.
WhatsAppi vestlusroboti loomiseks on esimene väljakutse saada WhatsAppilt sõnumeid oma programmi. Lihtsaim lahendus, mille leidsin, on Twilio jagatud telefoninumbri kasutamine. See on lihtsalt arendus - tootmise juurde minnes soovivad arendajad kasutada spetsiaalset telefoninumbrit.
Iga Twilio tasuta numbrit jagatakse paljude Twilio kasutajate vahel. Rakenduse lõppkasutajate eristamiseks teiste Twilio kasutajate rakenduste kasutajatest peavad lõpptarbijad saatma vestlusrobotile eelnevalt määratletud sõnumi.
Pärast seda, kui kasutaja saadab jagatud numbrile erisõnumi, suunatakse kõik tema numbrilt saadetud sõnumid teie Twilio kontole ja veebihookidele. Seetõttu on tootmisel vaja spetsiaalset numbrit - pole mingit garantiid, et antud kasutaja soovib antud jagatud numbril kasutada ainult ühte rakendust.
Twilio jaotises „Programmeeritav SMS-i juhtpaneel” on vasakul navigeerimisribal link „WhatsApp Beta”:
Sellel klõpsates näevad arendajad lehte valikuga „Liivakast”.
Kasutajate sidumiseks peavad nad saatma ühe erisõnumi numbrile, mille Twilio annab. Kui kasutajad seda teevad, saame hakata neile Twilio kaudu sõnumeid saatma ja nendelt sõnumeid töötlema.
Siin on näide sõnumi saatmise abil cURL:
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
See on lihtne tekstsõnum. Kuid saate oma sõnumitele lisada ka meediume (pilte jne). Siin on näide Node.js:
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)) }
See on kõik: nüüd saame hakata klientidele sõnumeid saatma! Kuid on oluline meeles pidada WhatsAppi sõnumite kahte kõige olulisemat tehnilist piirangut:
Sõnumite saatmine oli üsna lihtne, kuid sõnumite vastuvõtmine ja töötlemine on veelgi lihtsam.
Twilio lehel „liivakast” saavad arendajad määratleda, kuhu Twilio peaks jagatud WhatsAppi numbril sõnumid saatma. Arendamise ajal võivad sellised teenused nagu Ngrok või Serveo pakkuda avalikke URL-e, mis suunavad kohalike arendusmasinateni.
Twilio WhatsAppi sõnumid näevad välja sellised:
{ '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' }
See on kõik, mida vajame. Selle sõnumi saamiseks, selle sõelumiseks ja proovimiseks saame aru saada, mida kasutajad küsivad. Selle tulemuseks on arvatavasti mõned CRUD-toimingud andmebaasis, pärast mida saab bot kasutajale vastuses vastava teabe (või õnnestumise / ebaõnnestumise teate) edastada. Need on WhatsAppi vestlusroboti loomise põhitõed.
Nagu mainitud, saavad vestlusrobotid vabatehnikasõnumeid saata ainult neile kasutajatele, kes nendega praegu suhtlevad, st 24-tunnise akna ajal. Kuid kui soovite saata sõnumeid uutele kasutajatele või väljaspool akent, peate kasutama eelnevalt kinnitatud sõnumimalle. Selle eesmärk on rämpsposti vältimine.
Minu kasutusalal tahtsin draivereid värskendada, kui keegi neid blokeeris, isegi kui nad pole vestlusroboti kasutajad. Klõpsake Twilios nupul „saatja” ja „konfigureeri”.
Selle malli valisin:
{{1}} is blocking your exit from the parking lot. I will notify you when they leave.
Mitu päeva hiljem kiitis Facebook minu malli heaks ja ma sain hakata neid sõnumeid saatma kõigile, kellel oli WhatsApp, mitte ainult draiveritele, kes olid vestlusrobotile sõnumi saatnud.
Sõnumi saatmine mallist on täpselt nagu tavalise sõnumi saatmine sama API abil. WhatsApp näeb automaatselt, et see sobib malliga, ja kiidab sõnumi heaks.
See strateegia on minu jaoks põnev, kui kujutan ette veebipoodi: võib-olla saavad inimesed ühel päeval vestlusrobotite abil kõike osta. See oleks sama lihtne kui WhatsAppi sõnumite saatmine ja piltide lisamine. Kujutage vaid ette, kas kasutajad saaksid igale WhatsAppi sõnumile lisada päris raha. Asjade ostmine oleks väga otsene. Kasutajatel on tarnija vestlusrobotiga rääkides hõlpsasti võimalik midagi osta.
Kujutage ette vestlusroboti, mis asendab Waze'i või Google Mapsi. Saadate talle oma sihtkoha tekstisõnumi. Chatboti platvorm jälgib teie asukohta ja chatbot saadab teile salvestatud sõnumi, mis mängib automaatselt navigeerimise reaalajas räägitud suunaga.
See pole fantaasia. WhatsApp toetab praegu asukoha jagamist reaalajas - neil on vaja ainult võimalust saabunud sõnumeid automaatselt esitada ja voilà.
Mõelge rakenduste Gett või Uber asemel Waze'i vestlusrobotile või takso vestlusrobotile. Saadate sõnumi, kus öeldakse, kus te olete, siis saabub takso ja maksate WhatsAppi kasutades. Nii lihtne.
Mõni lugeja võib mõelda: 'Kas kasutajad ei eelista mitte ainult kirjutamist, vaid graafilisi liideseid?' Usun, et chatboti platvormid annavad chatboti omanikule võimaluse konversiooni ajal saata nuppe, pilte ja puhtaid HTML-kaste. Facebook juba toetab Messengeri veebivaade . Kasutajad ei pea midagi installima, vaid kasutavad lihtsalt eelistatud kiirsuhtlusrakendust.
Need eelised on, miks arendajad soovivad luua WhatsAppi vestlusroboteid oluliste ülesannete täitmiseks, näiteks andmiseks kohesed autoriteetsed vastused koroonaviiruse pandeemia kohta, et aidata piirata väärinfo levikut.
Kokkuvõttes:
Vestlusroboti kirjutamise eelised on üsna selged. Arendajatel, kes on valmis selle ehitama, soovitatakse alustada väikesest vestlusrobotist, mis mõistab ühte sõnumit. Ja saab sellega hästi hakkama.
Juturobotid peaksid jääma lühisõnumite juurde. Inimesed ei loe pikki sõnumeid. Kui teil on midagi olulist saata, mida ei saa lühidalt väljendada, on parem jagada sõnumid mitmele väikesele.
Isiksusega vestlusrobotid võetakse paremini vastu. Isegi mõned minimaalsed 'inimlikud kõnelemised' lähevad kaugele võrreldes 'süsteemse sõnumi formaalsuse' lähenemisviisiga: 'Ma värskendan teie jaoks parkimiskaarti', selle asemel, et 'andmebaasi on uuendatud'. Juturobot peaks jätma kasutajale tunde, et see on masin, mis on mõeldud kasutaja teenindamiseks, mitte must kast, mis teostab tehnilisi toiminguid, millest nad ei pruugi aru saada.
See WhatsAppi vestlusroboti õpetus ei võtnud arvesse loomulikus keeles sõnumid kasutajad saadavad vestlusrobotidesse. Kuid pürgivad teenusepakkujad chatboti arendusteenused on teretulnud tutvuma lähtekood WhatsAppi parkimisabilise botist (eriti hackparkDialogFlow.ts
, mis võtab kasutajalt päringu vastu kui toiminguid), et tunnetada, kuidas see aspekt töötab.
Põhjalikumat artiklit selle kohta, kuidas tuvastada erinevat tüüpi kasutajate teateid - järgides ka sõltuvuse süstimise lähenemist programmeerimisele, vt ApeeScape'i TypeScripti vestlusroboti õpetus .
Parimat õnne omaenda WhatsAppi vestlusroboti arendamisel!
Alguses oli WhatsApp kiirsuhtlusrakendus, mis võimaldas selle kasutajatel teistele WhatsAppi kasutajatele tekstisõnumeid, heli-, video- või mis tahes muid faile saata ja vastu võtta. Hiljuti avaldas Facebook WhatsAppi API, et saaksime vestlusrobotite kaudu sõnumeid automaatselt saata ja vastu võtta.
WhatsApp kasutab end-to-end krüptimislahendust, nii et keegi, sh WhatsApp, ei saa selle sõnumeid lugeda ega kontrollida. Sõnumid krüpteeritakse ja dekrüpteeritakse kasutaja seadmes.
Mitu korda võib vestlusroboti arendamine lühendada arendusaega oluliselt, kuna pole vaja kujundada ja kavandada graafilist kasutajaliidest ning pole vaja kohandada platvormidevahelist lahendust.
Juturobotid on tulevik, kuna need võimaldavad kiirendatud arendustsükleid, reageerides muutustele kiiremini olemasolevate, hästi hooldatud platvormide abil. Vestlusrobotid kasutavad automaatselt vestlusplatvormide ühilduvust tohutu hulga seadmetega. UX-i mõttes annavad vestlusrobotid kasutajatele ühtse ja hõlpsasti navigeeritava liidese.
Juturobotid võimaldavad kasutajatel hõlpsasti teha soovitud toiminguid ilma uusi rakendusi installimata või uusi kasutajaliideseid õppimata. Juturobotite abil saavad kasutajad hõlpsasti saada värskendusi kasutatavatest teenustest.
Jah. Hiljuti avaldas Facebook WhatsAppile uue API, mis võimaldas ettevõtetel programmiliselt WhatsAppi sõnumeid saata ja vastu võtta. WhatsAppi API kasutamise alustamiseks peavad arendajad oma ettevõtte kinnitama ja WhatsAppil olema heakskiit või nad peavad kasutama kolmanda osapoole pakkujat.