
🤖 Loo Viberi bot PHP-s 6 sammuga: täielik juhend
Kasutaja kirjutab Viberis ja keegi ei vasta. Väikeettevõtetele tuttav stsenaarium: üks haldur, kolm suhtlusrakendust ja kliendid lahkuvad nende juurde, kes vastasid esimesena. Vestlusrobot lahendab selle probleemi radikaalselt: see töötab ööpäevaringselt, ei väsi ja reageerib koheselt.
Varem, enne 2024. aasta veebruari, sai lihtsa Viberi roboti tasuta poole tunniga tööle panna. Nüüd on reeglid teised. Viber on robotid täielikult ärilisele alusele viinud, ilma ametliku taotluse ja partnerita ei saa tokenit. Aga kui sul juba on avalik konto (või seadistad seda just praegu), siis tehniline pool, needsamad kuus sammu PHP-s, on jäänud samaks. Käisime selle tee tokenist kohandatud klaviatuurini läbi ja näitame iga sammu.
💡 Kiirülevaade:
- Lood Viberi avaliku konto ja hangid autentimistokeni: nüüd edastatakse see HTTP päises, mitte JSON-i kehas
- Seadistad veebihaagi koos HTTPS-sertifikaadiga ja kirjutad PHP töötleja sissetulevatele tagasikutse päringutele
- Rakendad sõnumite vastuvõtmise ja vastuste saatmise läbi sõnumite saatmise API: tekst, pildid, failid
- Lisad kohandatud klaviatuuri kiirvastuse ja linginuppudega, mis on roboti peamine navigeerimisvahend
- Kirjutad koodi kehtivale Viber REST API versioonile 7.3, mitte aegunud 2017. aasta juhenditele
Samm 1. Loo Viberi avalik konto
Esimene samm on hankida avalik konto (PA). Alates 5. veebruarist 2024 luuakse roboteid ainult ärilisel alusel ametlike Rakuten Viberi partnerite kaudu. Protsess näeb välja selline:
- Esitad taotluse Viberi avalike kontode lehel: ettevõtte tüüp, roboti kasutusstsenaariumid.
- Pärast kinnitamist saabub kutse. Taaskäivitad seadme, lähed avalike kontode põhiekraanile ja vajutad „Loo avalik konto".
- Täidad üksikasjad: nimi, kirjeldus, avatar. Sinu peamine Viberi konto määratakse administraatoriks.
Tulemuseks on avalik konto ja juurdepääs seadetele. Siin ilmubki autentimistoken.
Roboteid toetatakse iOS-is ja Androidis alates Viberi versioonist 6.5 ja uuemast ning töölauaversioonil alates 6.5.3. Kui sul on rakenduse vana versioon, uuenda see enne arenduse alustamist, vastasel juhul ei tööta klaviatuurid ja mõned API meetodid.
Samm 2. Hangi autentimistoken
Token (rakenduse võti) on sinu roboti unikaalne salajane identifikaator. Ilma selleta ei lähe ükski API päring läbi.
Pärast avaliku konto loomist on token administraatorile saadaval avaliku konto jaotises „Muuda infot". Alternatiivne viis on Viberi administraatori paneeli kaudu. Token näeb välja umbes selline:
455a0f2c05b4fe54-cb4e33d3200fbbae-95f29ebc06af09a8
See on demovõti, sinu omal on unikaalsed märgid, kuid sama struktuur.

Peamine muudatus võrreldes vanade juhenditega: alates API versioonist 7.0 edastatakse token mitte POST-päringu kehas, vaid X-Viber-Auth-Token HTTP päises. Kui saadad tokeni vanal viisil, auth_token väljana JSON-is, tagastab API missing_auth_token vea.
Vana formaat (enam ei tööta):
1 {"auth_token": "your_token", "url": "https://..."}
Kaasaegne lähenemine, päis:
1 X-Viber-Auth-Token: your_token
Hoia token saladuses. Igaüks, kellel see on, saab roboti nimel sinu tellijatele sõnumeid saata.
Samm 3. Seadista veebihaak ja kirjuta PHP töötleja
Veebihaak on URL sinu serveris, kuhu Viber saadab tagasikutse päringuid: kasutajate sõnumeid, tellimise teateid ja muid sündmusi.
Veebihaagi URL-i nõuded:
- HTTPS protokoll kehtiva SSL-sertifikaadiga usaldusväärselt sertifitseerimisasutuselt. Viber ei toeta iseallkirjastatud sertifikaate.
- Sertifikaat peab olema Sun Java usaldusväärses nimekirjas, kontrolli enne seadistamist.
Veebihaagi seadistamine on POST-päring aadressile https://chatapi.viber.com/pa/set_webhook. X-Viber-Auth-Token päises on sinu token. Päringu keha:
1 { 2 "url": "https://yourdomain.com/viber-webhook.php", 3 "event_types": ["delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started"], 4 "send_name": true, 5 "send_photo": true 6 }
Parameetrid:
url, sinu veebihaagi URL (kohustuslik, HTTPS).event_types, sündmused tagasikutse jaoks. Kohustuslikud ja mittefiltreeritavad: message, subscribed ja unsubscribed. Ülejäänud on valikulised.send_namejasend_photo, kas küsida kasutaja nime ja fotot. Töötab ainult siis, kui kasutaja on Viberi privaatsusseadetes lubanud „Sisu isikupärastamise".
Saadame päringu cURL kaudu:
1 <?php 2 3 $url = 'https://chatapi.viber.com/pa/set_webhook'; 4 5 $jsonData = json_encode([ 6 'url' => 'https://yourdomain.com/viber-webhook.php', 7 'event_types' => ['delivered', 'seen', 'failed', 'subscribed', 'unsubscribed', 'conversation_started'], 8 'send_name' => true, 9 'send_photo' => true 10 ]); 11 12 $ch = curl_init($url); 13 curl_setopt($ch, CURLOPT_POST, 1); 14 curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); 15 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 16 'Content-Type: application/json', 17 'X-Viber-Auth-Token: your_auth_token' 18 ]); 19 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 20 $result = curl_exec($ch); 21 curl_close($ch); 22 23 echo $result;
Pärast saatmist saadab Viber sinu veebihaagi URL-ile tagasikutse, et kontrollida kättesaadavust. Oodatakse HTTP 200 vastust. Tagasikutse andmed:
1 { 2 "event": "webhook", 3 "timestamp": 1457764197627, 4 "message_token": 241256543215 5 }
Sinu PHP töötleja peaks tagastama vastuse:
1 { 2 "status": 0, 3 "status_message": "ok", 4 "event_types": ["delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started", "message"] 5 }
Täielik veebihaagi töötleja kood, fail viber-webhook.php serveris:
1 <?php 2 3 $request = file_get_contents("php://input"); 4 $input = json_decode($request, true); 5 6 if ($input['event'] == 'webhook') { 7 $webhook_response['status'] = 0; 8 $webhook_response['status_message'] = "ok"; 9 $webhook_response['event_types'] = 'delivered'; 10 echo json_encode($webhook_response); 11 die; 12 } 13 elseif ($input['event'] == "subscribed") { 14 // User subscribed — can send a welcome message 15 } 16 elseif ($input['event'] == "conversation_started") { 17 // User opened chat — can send a menu 18 } 19 elseif ($input['event'] == "message") { 20 $type = $input['message']['type']; 21 $text = $input['message']['text']; 22 $sender_id = $input['sender']['id']; 23 $sender_name = $input['sender']['name']; 24 25 // Form response 26 $data = [ 27 'receiver' => $sender_id, 28 'type' => 'text', 29 'text' => "Hello, $sender_name! You wrote: $text", 30 'sender' => [ 31 'name' => 'My Viber Bot' 32 ] 33 ]; 34 35 $ch = curl_init("https://chatapi.viber.com/pa/send_message"); 36 curl_setopt($ch, CURLOPT_POST, 1); 37 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 38 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 39 'Content-Type: application/json', 40 'X-Viber-Auth-Token: your_auth_token' 41 ]); 42 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 43 $result = curl_exec($ch); 44 curl_close($ch); 45 }
Pärast edukat veebihaagi seadistamist ilmub botis 1:1 vestluse nupp ja kasutajad saavad dialoogi alustada. Selle valiku keelamiseks saada set_webhook tühja url-iga.
Samm 4. Sõnumite vastuvõtmine kasutajatelt
Kui kasutaja kirjutab botile, saadab Viber sinu veebihaagile tagasikutse sellises vormingus:
1 { 2 "event": "message", 3 "timestamp": 1457764197627, 4 "message_token": 4912661846655238145, 5 "sender": { 6 "id": "01234567890A=", 7 "name": "yarden", 8 "avatar": "http://avatar_url" 9 }, 10 "message": { 11 "type": "text", 12 "text": "a message to the service", 13 "media": "http://download_url", 14 "location": { 15 "lat": 50.76891, 16 "lon": 6.11499 17 }, 18 "tracking_data": "tracking data" 19 } 20 }
Peamised parsimist vajavad väljad:
Väli | Asukoht | Kirjeldus |
|---|---|---|
| Juurtase | Väärtus |
|
| Unikaalne Viberi ID, salvesta see, vajad seda vastuse saatmiseks |
|
| Kasutaja nimi (kui isikupärastamine on lubatud) |
|
| Sõnumi tüüp: text, picture, video, file, location, contact, sticker või url |
|
| Sõnumi tekst (tüübi |
| Juurtase | Unikaalne sõnumi ID, kohaletoimetamise staatuse jälgimiseks |
Mida on töötlejas oluline teha:
- Salvesta
sender.id → name/contextlink andmebaasi. Viber API-l pole „kõigi tellijate hankimise" meetodit, sa kogud ID-sid ise päringute laekumise käigus. - Kui kasutaja saatis pildi (
type: "picture"), on faili URL väljalmessage.media. - Ära ignoreeri
tracking_datavälja: see seob kasutaja vastuse sinu väljasaadetud sõnumiga, mis on dialoogianalüütika jaoks hindamatu väärtusega.
Samm 5. Sõnumite saatmine kasutajatele
send_message API toetab teksti, pilte, videoid, faile, asukohti, kontakte, kleepse, karusselle ja URL-i eelvaateid. Vaatame peamisi tüüpe.
Tekstsõnum. POST-päring aadressile https://chatapi.viber.com/pa/send_message koos X-Viber-Auth-Token päisega:
1 { 2 "receiver": "01234567890A=", 3 "type": "text", 4 "text": "Hello! How can I help you?", 5 "sender": { 6 "name": "Support Bot" 7 }, 8 "tracking_data": "welcome_message_001" 9 }
Parameeter | Kirjeldus |
|---|---|
| Saaja unikaalne Viberi ID (seesama |
| Sõnumi tüüp: text, picture, video, file, location, contact, sticker, carousel või url |
| Sõnumi tekst, kuni 7000 tähemärki |
| Kuvatav saatja nimi, kuni 28 tähemärki |
| Suvaline sõne kuni 4096 tähemärki, tagastatakse tagasikutses, kui kasutaja vastab |
Pildi saatmine:
1 { 2 "receiver": "01234567890A=", 3 "type": "picture", 4 "text": "March 2026 promotion", 5 "media": "https://yourdomain.com/img/promo.jpg", 6 "thumbnail": "https://yourdomain.com/img/promo_thumb.jpg", 7 "sender": { 8 "name": "Shop Bot" 9 } 10 }
media, pildi URL (ainult JPEG).thumbnail, pisipildi URL (samuti JPEG).text, kirjeldus, võib ollanull.
PHP funktsioon sõnumite saatmiseks, universaalne ümbris, mida me praktikas kasutame:
1 <?php 2 3 function sendViberMessage($receiverId, $type, $data, $trackingData = '') { 4 $token = 'your_auth_token'; 5 $apiUrl = 'https://chatapi.viber.com/pa/send_message'; 6 7 $payload = array_merge(['receiver' => $receiverId, 'type' => $type], $data); 8 9 if ($trackingData) { 10 $payload['tracking_data'] = $trackingData; 11 } 12 13 $ch = curl_init($apiUrl); 14 curl_setopt($ch, CURLOPT_POST, 1); 15 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); 16 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 17 'Content-Type: application/json', 18 "X-Viber-Auth-Token: $token" 19 ]); 20 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 21 $result = curl_exec($ch); 22 curl_close($ch); 23 24 return json_decode($result, true); 25 }
Piirang: JSON-päringu maksimaalne suurus on 30 KB. Arvesta sellega, kui saadad paljude elementidega karusselle.
6. Samm. Lisa kohandatud klaviatuur nuppudega
Klaviatuur asendab seadme standardse klaviatuuri nuppude komplektiga: kiirvastused, lingid saidile, üleminekud jaotistesse. See on boti peamine navigatsioonitööriist.
Klaviatuur kinnitatakse mis tahes sõnumitüübile send_message päringu keyboard välja kaudu:
1 { 2 "receiver": "01234567890A=", 3 "type": "text", 4 "text": "What are you interested in?", 5 "sender": { 6 "name": "Help Bot" 7 }, 8 "keyboard": { 9 "Type": "keyboard", 10 "BgColor": "#FFFFFF", 11 "Buttons": [ 12 { 13 "Columns": 6, 14 "Rows": 1, 15 "BgColor": "#2db9b9", 16 "ActionType": "reply", 17 "ActionBody": "Services", 18 "Text": "📋 Services", 19 "TextVAlign": "middle", 20 "TextHAlign": "center", 21 "TextSize": "regular" 22 }, 23 { 24 "Columns": 6, 25 "Rows": 1, 26 "BgColor": "#2db9b9", 27 "ActionType": "open-url", 28 "ActionBody": "https://yoursite.com/prices", 29 "Text": "💰 Prices", 30 "TextVAlign": "middle", 31 "TextHAlign": "center", 32 "TextSize": "regular" 33 } 34 ] 35 } 36 }

Klaviatuuri parameetrid:
Parameeter | Kirjeldus |
|---|---|
| Kuvamise tüüp. Praegu on saadaval ainult |
| Klaviatuuri taustavärv HEX-koodina |
|
|
Iga nupu parameetrid:
Parameeter | Võimalikud väärtused |
|---|---|
| 1-6, laius veergudes |
| 1 või 2, kõrgus ridades |
|
|
| Vastuse tekst või lingi URL |
| Nupu silt. Toetab HTML-silte: b, i, u, br ja span style |
| Nupu värv HEX-koodina |
|
|
| Taustapildi või GIF-i URL |
| Tausta peal oleva pildi URL |
| top, middle või bottom |
| left, center või right |
| small, regular või large |
Mõned olulised nüansid praktikast:
ActionType: "open-url"nupp avab lingi välises brauseris, mitte Viberi sees.- Ära koorma klaviatuuri üle: 4-6 nuppu on ühe ekraani jaoks optimaalne.
- Nuppude tausta-GIF-id (
BgMedia) toetavad kordamist parameetrigaBgLoop: true.
Sellest punktist alates on bot töövalmis: see võtab vastu sõnumeid, vastab teksti ja piltidega, kuvab menüüklaviatuuri.
Selles videos on otseesitlus kogu tsüklist: avaliku konto loomisest kuni esimese klaviatuuriga sõnumi saatmiseni. Kasulik vaadata enne koodi enda serveris käivitamist.
⁉️🤔 Korduma kippuvad küsimused
Kas 2026. aastal on võimalik Viberi botti tasuta luua?
Ei. Alates 5. veebruarist 2024 on Viber viinud boti loomise üle ainult ärilistele tingimustele. Tokeni saamiseks peate otse ühendust võtma Rakuten Viberi või mõne ametliku partneriga. Tasuta testkontosid enam ei väljastata. Enne seda kuupäeva loodud botid jätkavad tööd.
Kas Viberi boti jaoks on PHP kasutamine kohustuslik?
Ei, keel ei ole oluline. Viber API töötab HTTP POST/GET päringute kaudu, sobib iga backend: Node.js, Python, Go, Ruby. Näitame PHP-d, sest see on kõige levinum keel WordPressi majutusel ja jagatud serveritel, mis on enamikule saidiomanikest kättesaadav ilma täiendava keskkonna seadistamiseta.
Kuidas kontrollida, kas webhook töötab?
Pärast
set_webhookväljakutset saadab Viber kohe teie URL-ile callbacki sündmusega"event": "webhook". Server tagastab HTTP 200, webhook on aktiivne. Praegust olekut saate kontrollida korduvaset_webhookväljakutsega samade parameetritega, API vastus näitab registreeritudevent_types. Silumiseks kasutage serveris faili logimist käsugafile_get_contents("php://input").
Mis vahe on vana ja uue autentimismeetodi vahel?
Enne API versiooni 7.0 edastati token iga päringu JSON-kehas
auth_tokenväljana. Kaasaegne API (7.0+) nõuab tokeni edastamistX-Viber-Auth-TokenHTTP päises. Vana vormingut ei toetata,auth_token-iga kehas päringud tagastavadmissing_auth_tokenvea. Kui migreerite koodi 2017-2023 juhenditest, asendage tokeni edastamine päisega.
Mida teha, kui kasutaja ei näe klaviatuuri?
Kolm tõenäolist põhjust: (1) JSON-päring ületas 30 KB piirangut, vähendage nuppude arvu või eemaldage taustameedia; (2)
Typeväli sisaldab midagi muud kui"keyboard", see on ainus toetatud väärtus; (3) kasutaja on Viberi vanas versioonis, klaviatuure toetatakse alates versioonist 6.5.
Kas ma saan webhooki kustutada ja 1:1 vestluse keelata?
Jah, saatke
set_webhooktühja stringigaurl-is:
1 {"url": ""}
Vestlusnupp kaob, kuid token ja avalik konto säilivad. Kasulik boti teise serverisse kolimisel.
Mida valida 2026. aastal: oma PHP bot või koodivaba platvorm
Kui olete siiani lugenud, on teil ees kaks teed. Esimene on kirjutada bot PHP-s, järgides ülaltoodud samme. Saate täieliku kontrolli loogika, andmete ja majutuse üle. Sobib, kui bot on osa suuremast projektist: veebipood, tugiteenus, sisemine meeskonnatööriist.
Teine tee on koodivabad platvormid nagu SendPulse, Infobip või Kommunicate. Need haldavad webhooki infrastruktuuri ja pakuvad stsenaariumide jaoks visuaalset redaktorit. Hinnaks on igakuine tellimus ja tasuta paketi piirangud. Tüüpiliste ülesannete jaoks, nagu KKK automaatvastused, reklaamikirjad, on see enam kui piisav.
Praktikas me tavaliselt kombineerime: boti tuum on PHP-s kohandatud loogika jaoks ning klaviatuurid ja tervitusahelad paneme kokku platvormi visuaalses redaktoris, see on kiirem ja visuaalsem. Valige see, mis on teie oskustele ja ülesandele lähemal. Alustage juba täna esimese sammuga, avalik konto on seadistatud poole tunniga ja seejärel võtab iga järgmine samm täpselt nii kaua, kui kulub selle juhendi koodi kopeerimiseks ja kohandamiseks.



