Hur jag Whatsapp själv med motiverande citat varje morgon

Inspirerad av Kartik Nighanias 20 rader med Python-kod till Whatsapp hans föräldrar

Foto av Darpan Dodiya på Unsplash

1.0 Introduktion

I min tidigare artikel byggde jag ett mikroserviceprojekt som skrapar offert från internet. Den här artikeln är en fortsättning på det projektet. Nedan finns en lista över artiklar relaterade till mikroserviceprojektet. Disclaimer: Det är medlemmar berättelser.

  1. Steg-för-steg-guide för att bygga händelsedrivna mikroservicer med RabbitMQ (mikroservices, back-end-relaterade)
  2. Hur jag distribuerar mikroservices till Heroku med RabbitMQ (distribution, Heroku)
  3. Hur jag utvecklade en realtid webbapp med server-skickade händelser (realtid)

Även om dessa artiklar handlar om samma projekt diskuterar var och en ett annat område inom programmering och programvaruteknik. Så låt oss prata om WhatsApp-integration den här gången.

2.0 Projektbakgrund

Artikeln, I Wrote a Script to WhatsApp My Parents Every Morning in Just 20 Lines of Python Code, inspirerade mig att göra denna förbättring, vilket är att WhatsApp själv med en enda motiverande offert dagligen klockan 8 Det är det ultimata målet som vi vill uppnå i denna artikel.

Dessutom, som utvecklare och användare av detta projekt, går jag inte till min webbplats och ser motiverande citat dagligen, vilket skulle vara ett besvär. För att få en bättre UX bör erfarenheten att överföra offert vara sömlös.

Det är här idén att använda SMS, e-post eller till och med WhatsApp skulle vara ett ganska bra val.

3.0 Lösningsdesign

För att leverera funktionen som nämns ovan, låt oss göra några planerings- och tänkningsövningar för att lyckas träffa målet. Det finns flera förutsättningar / inställningar som vi måste göra innan vi startar kodningen i backend.

3.1 Inställning

  • Registrera ett Twilio Sandbox-konto.
  • Registrera mitt telefonnummer i Twilio Sandbox så att jag kan få WhatsApp-meddelande från Twilio.

3.2 Baksida

  • Skapa en Heroku Scheduler (cron-jobb) för att schemalägga triggaren för SendQuoteToSubscribber-funktionssamtalet dagligen klockan 8
  • Skapa en API-slutpunkt, som sänder den skrapade offerten till abonnenten. När detta API kallas kommer det att utföra följande uppgifter. - Få en offert från Internet. - WhatsApp offerten till abonnenten.
  • Skapa en servicekomponent med namnet twilioService.js. Denna komponent ansvarar för alla Twilios relaterade funktioner. Du vill antingen att det ska skicka ett SMS, WhatsApp-meddelande etc.

Det här är en lista över uppgifter som vi måste utveckla. I nästa implementeringsavsnitt diskuterar vi back-end-kodningen. För en Twilio-installationsrelaterad guide diskuterade artikeln som jag nämnde i 1.0 Projektbakgrund installationsguiden mycket bra.

4.0 Genomförande

Låt oss börja med att skapa twilioService-komponenten.

4.1 Twilio-tjänst

Denna servicekomponent måste uppfylla detta mål.

  • Informera Twilio om att skicka ett WhatsApp-meddelande till prenumeranten.

Från kärnan har vi två funktioner. De är initClient och skickarWhatsappMessage.

  • initClient. Detta är för att skapa en klientanslutning med Twilio för att begära andra åtgärder. Vi använder Twilio Node hjälpbibliotek för att göra saker enklare och bekvämare. Dessutom kräver vi också kontoSid och authentToken, som du borde kunna hämta via din Twilio-konsol.
  • sendWhatsappMessage. Denna funktion får ett objekt som innehåller mobileNo och offert. Sedan använder vi hjälparbibliotekets client.messages.create-funktion för att informera Twilio att skicka WhatsApp-meddelandet. Du måste dock berätta för Twilio var du vill skicka, till vem du vill skicka och vad innehållet är. Det är där vi överför från, till och kropp till funktionen.

4.2 Skapa WhatsApp-citat API-slutpunkt

Nu har vi en fungerande twilioService som kan skicka WhatsApp-meddelandet. Nästa uppgift är att avgöra när vi ska utföra den här funktionen? För närvarande skapar vi en API-slutpunkt för att göra detta. Så att vår Heroku Scheduler helt enkelt kan utföra ett HTTP-samtal till slutpunkten för att WhatsApp offerten.

server.js skapar den grundläggande express-appen och en POST / whatsappQuote-slutpunkt. När denna API-slutpunkt kallas kommer den att utföra sendQuoteViaWhatsapp-funktionen. Låt oss nu se vad vi försöker göra i den funktionen.

Detaljerad förklaring för sendQuoteViaWhatsapp:

  1. För det första förväntar det sig en JSON-kropp med en mobilNo-nyckel.
  2. Då kommer vi att skrapa offerten från internet via scrapQuoteOfTheDay-funktionen.
  3. När vi får offerten kör vi funktionen sendWhatMessage som vi skrev tidigare för att skicka WhatsApp till vår telefon.
  4. Just nu, om du försöker avfyra API kommer du att få ett offertmeddelande till din WhatsApp. Se skärmdumpen nedan för att se vilken offert jag fick.
WhatsApp-skärmbild för mottagande av offert

4.3 Skapa en Heroku Scheduler (cron-jobb)

Eftersom mitt mikroserviceprojekt distribueras på Heroku undersöker jag Heroku möjlighet att uppnå vad jag vill istället för en annan plattform. Använd gärna vilken plattform du föredrar eller är bekant med.

Att skapa Heroku schemaläggare är lättare än du trodde. Nedan följer guiden:

  1. Gå till din instrumentbräda för Heroku-appen. Sök efter Heroku Scheduler i tilläggsfältet för tillägg.

2. Välj Heroku Scheduler och ange den.

3. Nu har du en fungerande Heroku Scheduler. Så vad måste vi automatisera då? Vi måste bara automatisera WhatsApp Quote API-samtal varje 24 timme klockan 8. Vi gör detta genom att helt enkelt utföra ett curl-kommando till vår API-slutpunkt.

Här är exemplet med curl-kommandot. Du kan enkelt generera curl-kommandot i Postman, om du använder det, vilket sparar dig mycket besvär om du inte är väl bekant med kommandot thecurl.

curl -X POST \ http://127.0.0.1:8083/whatsappQuote \ -H 'Acceptera: * / *' \ -H 'Accept-Encoding: gzip, deflate' \ -H 'Cache-Control: no-cache' \ -H 'Connection: keep-alive' \ -H 'Content-Length: 34' \ -H 'Content-type: application / json' \ -H 'Host: 127.0.0.1:8083' \ -H 'Postman- Token: f7be2ed4-da7f-4b31-9ead-a78820272fc9,91d8c930-6e69-42fc-8eaf-913b695aa386 '\ -H' Användaragent: PostmanRuntime / 7.15.2 '\ -H' cache-control: no-cache '\ - d '{"mobileNo": "YOUR_MOBILE_NO_REGISTERED_IN_TWILIO_SANDBOX"}'

4. Nu bara spara jobbet och förvänta morgondagens motiverande offert skickat till din WhatsApp. Jag hoppas att dagens citat ger ditt liv värde.

Slutsats

Twilio-integrationen är ganska enkel och jag tror att du kan utveckla den ganska snabbt. Det finns dock flera nackdelar när du använder Twilio Sandbox:

  • Du kan bara använda fördefinierade mallmeddelanden i Twilio Sandbox.
  • Det finns begränsad prövningskredit för Twilio Sandbox, vilket innebär att du kanske inte kan använda Twilio WhatsApp när du har använt krediten. Men om du är villig att betala för det, skulle det vara en mycket bra lösning för dig.

Slutligen kommer jag att dela några idéer som kom fram när jag utvecklade projektet:

  • API-autentisering och godkännande. För närvarande är API: n öppen för allmänheten, och det är ganska riskabelt.
  • E-postintegration. Även om det är bra att skicka WhatsApp-meddelanden, kommer många inte lätt att avslöja sitt mobilnummer. Således verkar e-postintegration som en mer lovande lösning som kan locka fler användare.

Det finns mycket mer att utforska sedan jag startade detta projekt. Glad att utvecklas, och tack för att du läste.