Kirjaa WhatsApp-viestit Google Sheetsiin ja lähetä viestejä taulukosta
Osoita numeron webhook-osoite n8n-työnkulkuun, jonka Google Sheets -node lisää jokaisesta viestistä rivin: lähettäjä, nimi, teksti, viestin tunnus ja aika. Lähettääksesi taulukosta voit kirjoittaa Apps Script -funktion, joka käy rivit läpi ja kutsuu Cloud API -rajapintaa UrlFetchAppilla numeron phone number id:llä ja tokenilla. Tiimi vastaa edelleen WhatsApp Business -sovelluksesta.
Google Sheets API:n sallimat kirjauspyynnöt minuutissa käyttäjää ja projektia kohden; projektia kohden 300.
Apps Scriptin URL Fetch -kutsut kuluttajan Google-tilillä; Workspace-tileillä 100 000.
Pisin aika, jonka yksittäinen Apps Script -suoritus saa kestää ennen kuin se pysäytetään.
Miten jokaisesta WhatsApp-viestistä tulee rivi?
Meta lähettää jokaisen numeroon saapuvan viestin asettamaasi webhook-osoitteeseen. Tässä se on n8n:n Webhook-node, joka vastaa myös Metan vahvistuspyyntöön. Seuraava node on Google Sheets ja sen Append Row -toiminto, joka kopioi payloadin kentät sarakkeisiin: lähettäjän numero, profiilinimi, teksti, WhatsAppin viestin tunnus, aikaleima ja vastaanottavan numeron phone number id.
Käytä pelkän lisäyksen sijaan toimintoa Append or Update Row viestin tunnuksen mukaan, jos haluat uudelleenyritysten olevan vaarattomia. Meta lähettää viestin uudelleen, kun se luulee toimituksen epäonnistuneen, ja tunnukseen perustuva avain muuttaa toisen toimituksen saman rivin päivitykseksi.
Coexistence-numerolla WhatsApp Business -sovelluksessa kirjoitetut vastaukset saapuvat samaan webhookiin smb_message_echoes-tapahtumina. Kirjaa ne suunta-sarakkeen kanssa, niin taulukossa on molemmat osapuolet.
Missä Sheetsin kiintiö alkaa purra?
Käyttäjäkohtaisissa kirjauksissa. Sheets API sallii 300 kirjauspyyntöä minuutissa projektia kohden ja 60 minuutissa käyttäjää ja projektia kohden, ja n8n:n tunnistetiedot vastaavat yhtä käyttäjää. Työnkulku, joka lisää yhden rivin viestiä kohden, pystyy siis käsittelemään noin yhden viestin sekunnissa jatkuvasti.
Se riittää useimmille verkkokauppojen numeroille. Se ei enää riitä massalähetyksen viestipohjan jälkeen, kun muutaman sadan asiakkaan vastaukset tulevat parissa minuutissa. Silloin API vastaa 429 Too Many Requests, ja ilman uudelleenyrityksiä rivejä katoaa.
Korjauksia on kaksi, ja kumpi tahansa riittää. Ota Google Sheets -noden uudelleenyritykset käyttöön viiveellä, mikä vastaa Googlen omaa ohjetta perääntyä eksponentiaalisesti. Tai kokoa viestit erissä: anna n8n:n kerätä viestejä kolmenkymmenen sekunnin ajan ja lisätä ne yhdellä pyynnöllä, jolloin monta kirjausta muuttuu yhdeksi.
Miten viestipohjia lähetetään taulukosta?
Apps Scriptillä, taulukon Laajennukset-valikosta. Funktio lukee rivit, joita ei ole vielä lähetetty, kutsuu Cloud API -rajapinnan messages-endpointia UrlFetchAppilla jokaiselle riville ja kirjoittaa palautetun viestin tunnuksen ja ajan riville. Aikaperusteinen laukaisin voi ajaa sen muutaman minuutin välein, tai voit ajaa sen käsin omasta valikosta.
Tallenna access token skriptin ominaisuuksiin koodin sijaan, jotta se ei näy kaikille, jotka voivat katsoa skriptiä.
Pidä kiintiöt mielessä. Kuluttajan Google-tili saa 20 000 URL Fetch -kutsua päivässä ja Workspace-tili 100 000, ja jokainen suoritus pysähtyy kuuden minuutin jälkeen. Käsittele rivit erissä ja merkitse jokainen lähetetyksi ennen seuraavaan siirtymistä, jotta pysäytetty ajo jatkuu siitä, mihin jäi, eikä lähetä samaa viestiä kahdesti.
function sendPending() {
const token = PropertiesService.getScriptProperties().getProperty("WHATSAPP_TOKEN");
const sheet = SpreadsheetApp.getActive().getSheetByName("Send");
const rows = sheet.getDataRange().getValues();
for (let i = 1; i < rows.length; i++) {
const [phone, name, sentAt] = rows[i];
if (sentAt) continue;
const res = UrlFetchApp.fetch("https://graph.facebook.com/v23.0/<PHONE_NUMBER_ID>/messages", {
method: "post",
contentType: "application/json",
headers: { Authorization: "Bearer " + token },
payload: JSON.stringify({
messaging_product: "whatsapp", to: String(phone), type: "template",
template: { name: "order_ready", language: { code: "en" },
components: [{ type: "body", parameters: [{ type: "text", text: name }] }] },
}),
});
sheet.getRange(i + 1, 3).setValue(new Date());
}
}Yleiset virheet
- Rivin lisääminen ilman avainta viestin tunnuksella. Metan uudelleenyritykset kirjoittavat silloin saman viestin kahdelle riville.
- Yhden rivin kirjoittaminen viestiä kohden yhden tunnistetiedon kautta vastausryöpyn aikana. Raja 60 kirjausta minuutissa käyttäjää kohden palauttaa virheen 429, ja rivejä katoaa.
- Vapaan tekstin lähettäminen taulukosta ihmisille, jotka eivät ole kirjoittaneet 24 tuntiin. Vain hyväksytty viestipohja menee perille tämän ikkunan ulkopuolella.
Yhdistä numero osoitteessa easycoexistence.com, osoita sen webhook-osoite n8n-työnkulkuun ja kopioi phone number id ja token skriptiin. Hinta alkaen US$ 9 numerolta kuukaudessa ja laskee numeroita lisättäessä tasolle US$ 1, ja ensimmäiset 3 päivää ovat ilmaisia.
Usein kysytyt kysymykset
Voinko käyttää n8n:n sijaan Makea tai Zapieria?
Kyllä. Maken mukautettu webhook tai Zapierin catch hook vastaanottaa viestin, ja niiden Google Sheets -vaihe lisää rivin.
Minkä Google-tilin nimissä n8n kirjoittaa?
Sen tilin, joka valtuutti n8n:n Google-tunnistetiedot. Tilillä täytyy olla muokkausoikeus taulukkoon, ja sen käyttäjäkohtainen kirjauskiintiö on se, jota työnkulku kuluttaa.
Onko puhelinnumerosarake muotoiltu oikein?
Tallenna numerot pelkkänä tekstinä: numerot maatunnuksen kanssa ilman plusmerkkiä, eli siinä muodossa kuin Meta ne lähettää. Muuten Sheets käsittelee niitä lukuina, jolloin alussa oleva plusmerkki katoaa ja pitkät arvot voivat muuttua.
Säilyttääkö EasyCoexistence kopion viesteistä?
Ei. Meta toimittaa jokaisen webhookin n8n:n URL-osoitteeseesi, ja taulukko on ainoa kopio.
Lue lisää
Valmis aloittamaan?
Ota WhatsApp Coexistence käyttöön minuuteissa, ei kuukausissa. Sovellus toimii edelleen puhelimessa.
Aloita ilmainen kokeiluVahvistettu