Partea 1: Dacă nu aveți timp să citiți
Acest exemplu de implementare a botului detaliază în profunzime cele mai frecvent utilizate funcționalități. Acest lucru vă va permite să adaptați codul sursă la sarcinile și nevoile dvs., sau să-l luați ca bază pentru a crea orice altă integrare. Am lăsat comentarii lângă fiecare funcție pentru a vă facilita înțelegerea codului. În codul sursă al botului veți găsi următoarele funcționalități:
- Răspunde la o comandă necunoscută, aceasta ar putea fi o instrucțiune sau mesajul dvs. de bun venit;
- Trimiteți mesaj obișnuit;
- Trimiteți imagine;
- Trimiteți fișier;
- Trimiteți videoclip;
- Trimiteți contact (vCard);
- Trimiteți produs;
- Creați un grup nou, trimiteți o invitație și trimiteți mesaj în grup;
- Primiți și citiți mesajele primite;
Pentru funcționarea botului, NU ESTE NECESAR ca telefonul să fie pornit sau online. Conectați numărul și testați integrarea confortabil!
Și dacă aveți nevoie de ajutor, scrieți-ne în chatul de suport de pe orice pagină a site-ului.
Dacă vă decideți ce furnizor să alegeți sau dacă nu înțelegeți pe deplin diferența dintre WhatsApp Business API și WhatsApp API, vă va fi util să studiați ghidul nostru în care vom compara furnizorii, funcționalitatea, prețurile și soluțiile actuale. Acest lucru va fi util pentru toată lumea pentru a decide ce API și ce furnizor să aleagă. Așadar, scufundați-vă în articolul nostru "Cum să alegeți WhatsApp API. Comparație."
Și dacă aveți nevoie de ajutor, scrieți-ne în chatul de suport de pe orice pagină a site-ului.
Dacă vă decideți ce furnizor să alegeți sau dacă nu înțelegeți pe deplin diferența dintre WhatsApp Business API și WhatsApp API, vă va fi util să studiați ghidul nostru în care vom compara furnizorii, funcționalitatea, prețurile și soluțiile actuale. Acest lucru va fi util pentru toată lumea pentru a decide ce API și ce furnizor să aleagă. Așadar, scufundați-vă în articolul nostru "Cum să alegeți WhatsApp API. Comparație."
De ce ar trebui să creezi un Chatbot WhatsApp?
În lumea modernă, WhatsApp nu este doar principala platformă de mesagerie instant cu miliarde de utilizatori, ci și un instrument esențial pentru afaceri. Automatizarea funcțiilor de mesagerie oferă o serie de avantaje strategice: de la suport pentru clienți în timp real până la marketing eficient și colectarea feedback-ului. În această lumină, crearea unui bot pentru WhatsApp devine un pas cheie în optimizarea proceselor de afaceri și în stabilirea unui contact direct cu publicul dvs.
În acest ghid, vom furniza instrucțiuni pas cu pas pentru crearea unui bot WhatsApp în PHP. Veți afla:
- Cum să lucrați cu API-ul WhatsApp;
- Să înțelegeți subtilitățile creării chat-boturilor în PHP;
- Automatizați și îmbunătățiți interacțiunea cu clienții dvs.;
Pregătirea pentru început - Ce vei avea nevoie
Înainte de a trece la partea practică a creării unui bot pentru WhatsApp în PHP, asigurați-vă că aveți toate instrumentele și resursele necesare.
- Cont Whapi.Cloud. Pentru a lucra cu API-ul WhatsApp, veți avea nevoie de un cont pe Whapi.Cloud. Acest furnizor oferă dezvoltatorilor metode pentru automatizarea WhatsApp și documentația API. În prezent, Whapi.Cloud este cel mai funcțional și stabil furnizor, oferind acces la prețuri accesibile la API-ul WhatsApp. După înregistrare, veți primi un canal gratuit cu o cheie unică de token API, care vă va permite aplicației/integrării dvs. PHP să interacționeze cu mesagerul.
- Server cu PHP sau dezvoltare locală. Dacă decideți să testați botul local și doriți să interacționeze cu WhatsApp printr-un Webhook, puteți folosi unelte precum ngrok. Această aplicație creează tuneluri securizate către serverul dvs. local, oferind URL-uri publice temporare pe care le puteți folosi pentru testare. Pentru ca serverul să cheme scriptul nostru la primirea unor mesaje noi, trebuie să specificăm URL-ul WebHook în setările canalului. Vom vorbi despre asta mai detaliat mai târziu.
Lucrând cu API-ul WhatsApp prin Whapi.Cloud
Înregistrați-vă și mergeți la pagina canalului dvs. Înregistrându-vă pentru prima dată, veți primi 5 zile de acces complet la API, ceea ce va fi suficient pentru a testa toate metodele din API. Dacă aveți nevoie de mai mult, contactați suportul serviciului prin widget-ul de chat web și vă vor elimina restricțiile pentru o testare confortabilă.
Următorul pas va fi conectarea numărului dvs. WhatsApp. Nu vă faceți griji, vă puteți deconecta în orice moment, dar acest lucru este necesar pentru a vă verifica implementarea. Deci, accesați panoul dvs. personal, găsiți primul dvs. canal denumit Default Channel și faceți clic pe el. În primul pas, veți vedea un cod QR și o scurtă instrucțiune. Deschideți WhatsApp pe dispozitivul dvs. mobil, mergeți la Setări -> Dispozitive asociate -> Conectați dispozitivul -> Scanați codul QR.
În timpul conectării, la pașii doi și trei, veți avea ocazia să vă configurați canalul. Dați un nume canalului pentru comoditate (apropo, API-ul nostru va detecta imediat dacă folosiți versiunea standard sau versiunea de afaceri a aplicației cu funcții extinse). Ulterior, vor fi disponibile setările pentru webhook și alți parametri la alegerea dvs. Cu toate acestea, aceste acțiuni pot fi realizate mai târziu și puteți omite acest pas. După activarea canalului, în secțiunea despre limite, găsiți tokenul dvs. API. Acest token este esențial pentru autentificare când accesați API-ul. De obicei, este trimis în antetele solicitărilor ca un Bearer Token sau ca un parametru, în funcție de modul în care accesați API-ul. API-ul Whapi.Cloud oferă multe metode pentru a interacționa cu WhatsApp, permițându-vă cu adevărat să automatizați caracteristicile și funcțiile principale ale mesagerului. Pe pagina canalului, puteți studia și testa toate metodele disponibile. Pentru a vă facilita dezvoltarea, vi se oferă un hub specializat pentru dezvoltatori, unde fiecare funcție este însoțită de exemple de cod și posibilitatea de a testa în loc, arătând rezultatele și răspunsurile de la server. Acest lucru simplifică și accelerează foarte mult procesul de integrare, vă va plăcea! Unul dintre avantajele Whapi.Cloud este simplitatea și rapiditatea de conectare, permițându-vă să începeți să interacționați cu WhatsApp în doar câteva minute.
Ce este Webhook și cum îl configurez?
Botul dvs. WhatsApp și API-ul nostru trebuie să comunice, astfel încât când ceva se schimbă într-un sistem, celălalt sistem să fie informat. De exemplu, urmărirea schimbărilor de stare ale mesajelor, cum ar fi "trimis", "livrat" și "citit".
Aici intervine Webhook! Un Webhook configurat permite serverului dvs. să fie informat imediat despre evenimente specifice. Conform setărilor dvs., veți putea primi notificări despre mesaje, starea lor actuală, starea canalului, telefon, apeluri pierdute și așa mai departe. Principalul avantaj al Whapi.Cloud este flexibilitatea în configurarea și gestionarea webhook-urilor. Veți putea seta mai multe hook-uri diferite pentru orice eveniment. Și diverse opțiuni suplimentare, cum ar fi Auto Download sau Modul Webhook, vă vor facilita munca.
Am explorat toate nuanțele lucrului cu webhook-uri în mai multe detalii în baza noastră de cunoștințe: Vizualizați articolul despre webhook-uri
Accesați configurația canalului dvs. folosind butonul din colțul drept superior. La început, veți vedea secțiunea pentru webhooks. Furnizați URL-ul serverului dvs. pentru a primi notificări. Dacă este necesar, adăugați webhooks suplimentare, alegeți Modul și modul de funcționare al hook-ului. Când primiți un mesaj, se trimite o solicitare POST cu informații despre mesaj la URL-ul specificat de dvs. Acest lucru permite botului dvs. să analizeze mesajele primite și să răspundă corespunzător. Puteți seta webhooks fie prin interfața din panoul personal, fie programatic prin API (metoda /Update channel settings/). Vom discuta mai târziu despre cum să lucrați cu informațiile primite și cum să le procesați.
Crearea bazei unui bot în PHP
Trimite și primește mesaje
În primul rând, să definim structura proiectului dumneavoastră. Instalați Composer (dacă nu ați făcut-o deja), inițializați proiectul cu "composer init", instalați dependențele și generați autoloaderul. Veți avea un folder vendor cu autoloaderul. Acum puteți conecta autoloaderul Composer la începutul fișierului dvs. index.php. După acești pași de bază, proiectul dvs. va fi gata pentru dezvoltarea ulterioară.
Haideți să creăm directorul rădăcină public: aici vor fi localizate directorul executabil principal (de exemplu, index.php), config.php (pentru stocarea configurațiilor, cum ar fi cheia API) și dosarul "files" (pentru stocarea fișierelor pe care le veți trimite).
Vă reamintim că întregul cod sursă al acestui proiect poate fi descărcat de pe GitHub: https://github.com/Whapi-Cloud/php-whatsapp-chatbot
config.php
return [
// API endpoint URL
"apiUrl" => "https://gate.whapi.cloud",
// API token from your channel
"token" => "YOUR CHANNEL TOKEN",
// The ID of the group to which we will send the message. Use to find out the ID: https://whapi.readme.io/reference/getgroups
"group" => '[email protected]',
// The ID of the product we will send for the example. Create a product in your WhatsApp and find out the product ID: https://whapi.readme.io/reference/getproducts
"product" => '6559353560856703',
// Bot`s URL. Webhook Link to your server. At ( {server link}/messages ), when POST is requested, processing occurs in index.php
"botUrl" => "https://yoursite.com/messages"
];
index.php
require '../vendor/autoload.php';
use GuzzleHttp\Client;
use Slim\App;
use Slim\Http\Request;
use Slim\Http\Response;
// Don't forget to put your token in config.php
$config = require './config.php';
$app = new App();
$client = new Client([
'base_uri' => $config['apiUrl']
]);
// Commands for example bot
const COMMANDS = [
'TEXT' => 'Simple text message',
'IMAGE' => 'Send image',
'DOCUMENT' => 'Send document',
'VIDEO' => 'Send video',
'CONTACT' => 'Send contact',
'PRODUCT' => 'Send product',
'GROUP_CREATE' => 'Create group',
'GROUP_TEXT' => 'Simple text message for the group',
'GROUPS_IDS' => 'Get the id\'s of your three groups'
];
// Url files for example
const FILES = [
'IMAGE' => './files/file_example_JPG_100kB.jpg',
'DOCUMENT' => './files/file-example_PDF_500_kB.pdf',
'VIDEO' => './files/file_example_MP4_480_1_5MG.mp4',
'VCARD' => './files/sample-vcard.txt'
];
function sendWhapiRequest($endpoint, $params = [], $method = 'POST')
{
global $config, $client;
$url = $config['apiUrl'] . '/' . $endpoint;
$options = [
'headers' => [
'Authorization' => 'Bearer ' . $config['token'],
],
];
if ($params && count($params) > 0) {
if ($method === 'GET') {
$url .= '?' . http_build_query($params);
} else {
if(isset($params['media'])){
$options['multipart'] = toFormData($params);
}else{
$options['headers']['Content-Type'] = 'application/json';
$options['body'] = json_encode($params);
}
}
}
echo '$options: ' . print_r($options, true);
$response = $client->request($method, $url, $options);
$json = json_decode($response->getBody()->getContents(), true);
echo 'Whapi response: ' . print_r($json, true);
return $json;
}
function toFormData($params)
{
$multipart = [];
foreach ($params as $name => $contents) {
$multipart[] = ['name' => $name, 'contents' => $contents];
}
return $multipart;
}
// Call this function if you want to setup a webhook through the API. In this example it is not called: you will need to go to the channel settings in your personal cabinet and set the webhook link like {link to your server}/messages
function setHook()
{
global $config;
if ($config['botUrl']) {
sendWhapiRequest('settings', [
'webhooks' => [
[
'url' => $config['botUrl'],
'events' => [
[
'type' => 'messages',
'method' => 'post'
]
],
'mode' => 'body'
]
]
], 'PATCH');
}
}
$app->get('/', function (Request $request, Response $response) {
return $response->write('Bot is running');
});
$app->post('/messages', function (Request $request, Response $response) use ($config) {
$data = json_decode($request->getBody(), true);
$messages = $data['messages'] ?? [];
foreach ($messages as $message) {
if ($message['from_me']) {
continue;
}
$sender = ['to' => $message['chat_id']];
$endpoint = 'messages/text';
$textBody = trim($message['text']['body'] ?? '');
$commandIndex = is_numeric($textBody) ? (int)$textBody - 1 : null;
$commands = array_keys(COMMANDS);
$command = $commands[$commandIndex] ?? null;
switch ($command) {
case 'TEXT':
$sender['body'] = 'Simple text message';
break;
case 'IMAGE':
$sender['caption'] = 'Text under the photo.';
$sender['media'] = fopen(FILES['IMAGE'], 'r');
$endpoint = 'messages/image';
break;
case 'DOCUMENT':
$sender['caption'] = 'Text under the document.';
$sender['media'] = fopen(FILES['DOCUMENT'], 'r');
$endpoint = 'messages/document';
break;
case 'VIDEO':
$sender['caption'] = 'Text under the video.';
$sender['media'] = fopen(FILES['VIDEO'], 'r');
$endpoint = 'messages/video';
break;
case 'CONTACT':
$sender['name'] = 'Whapi Test';
$sender['vcard'] = file_get_contents(FILES['VCARD']);
$endpoint = 'messages/contact';
break;
case 'PRODUCT':
// Replace with your product ID
$endpoint = "business/products/{$config['product']}";
break;
case 'GROUP_CREATE':
$groupSettings = [
'subject' => 'Whapi.Cloud Test',
'participants' => [$message['from']]
];
$groupResponse = sendWhapiRequest('groups', $groupSettings, 'POST');
$sender['body'] = $groupResponse['group_id'] ? "Group created. Group id: {$groupResponse['group_id']}" : 'Error';
$endpoint = 'messages/text';
break;
case 'GROUP_TEXT':
$sender['to'] = $config['group'];
$sender['body'] = 'Simple text message for the group';
break;
case 'GROUPS_IDS':
$groupsResponse = sendWhapiRequest('groups', ['count' => 3], 'GET');
if (!empty($groupsResponse['groups'])) {
$groupIds = array_map(function ($group, $i) {
return ($i + 1) . ". {$group['id']} - {$group['name']}";
}, $groupsResponse['groups'], array_keys($groupsResponse['groups']));
$sender['body'] = implode(",\n ", $groupIds);
} else {
$sender['body'] = 'No groups';
}
break;
default:
$sender['body'] = "Hi. Send me a number from the list. Don't forget to change the actual data in the code! \n\n" .
implode("\n", array_map(function ($text) {
static $i = 0;
$i++;
return ($i) . ". $text";
}, COMMANDS, array_keys(COMMANDS)));
break;
}
try {
sendWhapiRequest($endpoint, $sender);
} catch (\Exception $e) {
error_log($e->getMessage());
return $response->withStatus(500)->write('Error: ' . $e->getMessage());
}
}
return $response->withStatus(200)->write('Ok');
});
$app->run();
Acest robot simplu va răspunde la comenzi necunoscute cu un mesaj de meniu, precum și va răspunde cu anumite acțiuni la comenzi specifice.
Deoarece răspunsurile sunt în format JSON, acest lucru oferă o mare posibilitate de dezvoltare a bot-ului dumneavoastră. Acesta poate include detalii precum ora și starea de livrare a mesajului sau starea utilizatorului (online sau offline), permițând botului dvs. să optimizeze interacțiunile cu clienții. Documentația noastră și Developer Hub oferă detalii complete despre structura răspunsului și parametrii așteptați pentru fiecare solicitare. Toate detaliile și parametrii sunt descrise în documentație. Utilizați funcționalitatea Vesb pentru a vă face botul și mai eficient.
Caracteristici avansate
În documentația noastră detaliată, veți găsi instrucțiuni pas cu pas și exemple de utilizare a metodelor care permit trimiterea de conținut variat, de la fișiere de orice format, locații și contacte la stickere, sondaje și produse într-un mesaj. În plus, puteți interacționa cu mesajele citându-le, reacționând cu emoji, marcându-le ca citite, atașând sau simulând scrierea în timp real când răspundeți.
Automatizarea grupurilor în WhatsApp prin intermediul Whapi.Cloud oferă posibilități extinse. Cu API-ul, puteți crea, edita sau șterge grupuri automat, obține informații despre grupuri și membrii grupului (numere, nume, număr total), gestiona membrii, defini roluri de administrator, ajusta parametrii grupului (avataruri, nume, setări), crea invitații prin linkuri, bloca membri și multe altele. Toate metodele disponibile sunt detaliate în documentația Whapi.Cloud.
Având la dispoziție o gamă atât de largă de capabilități, crearea unui bot adaptat oricărui nivel de complexitate și scop devine ușoară. Integrați fără probleme botul dvs. bazat pe PHP în orice platformă, fie că este un site web, o aplicație, CRM, sistem ERP și dincolo de acestea.
Trimite un mesaj cu imagine
Trimiterea unui mesaj cu imagine printr-un bot WhatsApp crește implicarea utilizatorului, oferă o experiență mai dinamică și interactivă și permite companiilor să prezinte produse sau să transmită mesaje vizual, creând un canal de comunicare mai bogat comparativ cu textul singur. Iată cum să trimiteți o imagine prin Whatsapp API cu PHP:
const BASE_URL = 'https://gate.whapi.cloud/';
$token = 'bg3FeZJ6jWGw32g03PRnoNkKO7k03GtX'; // Your API token
$data = array (
'media' => 'https://upload.wikimedia.org/wikipedia/commons/b/ba/Leonardo_self.jpg',
'to' => '[email protected]',
'mime_type' => 'jpg',
'caption' => 'Leonardo Self'
);
$data_json = json_encode($data);
$url = BASE_URL . 'messages/image';
$options = array(
'http' => array(
'method' => 'POST',
'header' => array(
'Authorization: Bearer '.$token,
'Content-Type: application/json',
'Accept: application/json'
),
'content' => $data_json
)
);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
echo $response;
Trimite fișier prin WhatsApp API
Trimiterea fișierelor printr-un bot WhatsApp facilitează distribuirea informațiilor, oferă un mod sigur și instant de a distribui documente importante și îmbunătățește experiența utilizatorului oferind opțiuni de comunicare mai versatile dincolo de text și imagini. Iată cum să trimiteți un fișier prin Whatsapp API cu PHP:
const BASE_URL = 'https://gate.whapi.cloud/';// Ensure that the PHP allow_url_fopen setting is enabled, as file_get_contents requires it for URL handling.
$token = 'bg3FeZJ6jWGw32g03PRnoNkKO7k03GtX'; // Your API token
$data = array (
'to' => '[email protected]',
'media' => 'data:application/octet-stream;name=site.webmanifest;base64,ewogICAgIm5hbWUiOiAiIiwKICAgICJzaG9ydF9uYW1lIjogIiIsCiAgICAiaWNvbnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAic3JjIjogIi9hbmRyb2lkLWNocm9tZS0xOTJ4MTkyLnBuZyIsCiAgICAgICAgICAgICJzaXplcyI6ICIxOTJ4MTkyIiwKICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UvcG5nIgogICAgICAgIH0KICAgIF0sCiAgICAidGhlbWVfY29sb3IiOiAiI2ZmZmZmZiIsCiAgICAiYmFja2dyb3VuZF9jb2xvciI6ICIjZmZmZmZmIiwKICAgICJkaXNwbGF5IjogInN0YW5kYWxvbmUiCn0K',
'filename' => 'webmanifest',
'caption' => "It's my file",
'view_once' => true
);
$data_json = json_encode($data);
$url = BASE_URL . 'messages/document';
$options = array(
'http' => array(
'method' => 'POST',
'header' => array(
'Authorization: Bearer '.$token,
'Content-Type: application/json',
'Accept: application/json'
),
'content' => $data_json
)
);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
echo $response;
Concluzie și recomandări
Construirea unui bot WhatsApp folosind PHP și utilizând serviciul Whapi.Cloud pentru integrarea API simplifică complexitățile asociate cu platformele de mesagerie. Așa cum am demonstrat în acest ghid, procesul poate fi divizat în pași gestionabili pe care chiar și cei noi în PHP sau integrări API le pot înțelege și implementa.
Acest bot este proiectat cu filozofia "plug-and-play". Pentru a începe este foarte simplu. Mai întâi, tot ce trebuie să faceți este să vă înregistrați pe serviciul nostru. Oferim o perioadă de încercare gratuită, care vă permite să testați toate funcționalitățile înainte de a lua o decizie de cumpărare. Odată înregistrat, încărcați codul botului pe serverul dvs. Urmand instrucțiunile oferite în acest articol, botul dvs. va fi funcțional în cel mai scurt timp.
Amintiți-vă, dacă întâmpinați orice întrebări sau provocări pe parcurs, echipa noastră de suport este întotdeauna la dispoziție pentru a ajuta. Apreciem fiecare utilizator și ne angajăm să vă asigurăm că experiența dvs. cu API-ul nostru este cât mai simplă și eficientă posibil.