Logrīks ir interaktīvs komponents, kas iegults tieši bota ziņojumā: reklāmas kods ar kopēšanas pogu, atpakaļskaitīšanas taimeris, pasūtījuma statusa izsekotājs, viktorīna vai kalendārs datuma un laika izvēlei. Kad klients mijiedarbojas ar logrīku, bots atjaunina to pašu ziņojumu vietā — bez jaunu ziņojumu sūtīšanas vai “rediģēts” etiķetes parādīšanas.

Reklāmas kods

Ir divi veidi, kā nosūtīt logrīku:

  • Gatava veidne — viena rindiņa Kalkulatorā. Izkārtojums un funkcionalitāte jau ir ieviesti.
  • Pielāgots logrīks — rakstiet savu HTML kodu (vai lūdziet Mavi to izveidot) un apstrādājiet mijiedarbības, izmantojot bota plūsmas blokus.

Kur darbojas logrīki

Messenger Tikai Telegram
Tērzēšanas veids Tikai privātās sarunās starp klientu un botu
Nav atbalstīts Grupas, kanāli, Telegram Business
Telegram lietotne Nepieciešama jaunāka Telegram versija. Vecākās versijas rāda paziņojumu “Neatbalstīts ziņojums” un parakstu
Pārsūtīšana Logrīkus nevar pārsūtīt vai kopēt

Logrīki neatbalsta teksta ievades laukus vai tastatūras. Klienti var mijiedarboties tikai pieskaroties. Ja nepieciešams, lai klienti ievada tekstu, izmantojiet parasto bota jautājumu vai Web App.

Logrīki netiek rādīti bota testēšanas logā vadības panelī, jo tas nav Telegram. Testējiet logrīkus tieši Telegram, rakstot savam botam.


Gatavās veidnes

Visas veidnes tiek nosūtītas, izmantojot vienu funkciju:

tg_send_widget(platform_id, template, params, caption)
Parametrs Apraksts
platform_id Saņēmēja ID. Pašreizējam klientam izmantojiet mainīgo platform_id
template Veidnes nosaukums: promo, timer, order_status, faq, quiz, calendar
params Vārdnīca, kas satur veidnes iestatījumus
caption Teksts, kas tiek rādīts zem logrīka. Klienti to redz arī savā tērzēšanas sarakstā, paziņojumos un vecākās Telegram versijās, tāpēc tam jābūt jēgpilnam pašam par sevi

Funkcija atgriež Telegram API atbildi. Nosūtītā ziņojuma ID ir pieejams response['result']['message_id']. Saglabājiet to, ja plānojat vēlāk atjaunināt logrīku.

Ja funkcija atgriež tekstu, nevis Telegram atbildi, ir notikusi kļūda: nezināma veidne, nederīgs vai trūkstošs parametrs, vai logrīks pārsniedz izmēra ierobežojumu. Kļūdas teksts paskaidro, kas noticis nepareizi.

Kā izveidot parametrus

Izveidojiet vārdnīcu un piešķiriet katru parametru atsevišķā rindiņā:

p = {}
p["code"] = "WIDGET10"
p["title"] = "Jūsu reklāmas kods"
p["note"] = "10% atlaide jebkuram pasūtījumam"
w = tg_send_widget(platform_id, "promo", p, "Jūsu reklāmas kods WIDGET10 — 10% atlaide")

Ievadiet kodu bloka Kalkulatora laukā. Ekrānuzņēmumā redzams Sākuma nosacījuma bloks, kas nosūta pasūtījuma statusa logrīku, kad klients nosūta frāzi “pasūtījuma logrīks”.

Logrīks bota veidotājā

Blokā, kas nosūta logrīku, parasti iestatiet atbildes lauku uz #{none}. Bloks nesūta atsevišķu teksta ziņojumu, jo logrīka paraksts kalpo kā ziņojuma teksts.

Valoda

Veidnēs ir iebūvēts saskarnes teksts, piemēram, pogu etiķetes, mēnešu un nedēļas dienu nosaukumi, “Laiks beidzies” un citi ziņojumi.

Mavibot noklusējuma valoda ir angļu (en).

Lai izmantotu citu valodu, norādiet parametru lang:

p["lang"] = "de"

Atbalstītās valodas:

ru, en, de, es, fr, pt, tr, uk, kk, ms, th, ar.

Teksti, ko sniedzat pats — virsraksti, jautājumi, soļi un paraksti — tiek rādīti tieši tā, kā ievadīti, un netiek automātiski tulkoti.


Reklāmas kods — promo

Rāda reklāmas kodu ar pogu, kas to kopē ar vienu pieskārienu.

Reklāmas kods

Parametrs Apraksts
code Reklāmas kods. Obligāts
title Teksts, kas tiek rādīts virs koda
note Teksts, kas tiek rādīts zem koda, piemēram, derīguma termiņš
button Pogu etiķete. Noklusējums: “Kopēt reklāmas kodu”
used_text Teksts, kas tiek rādīts, kad kods ir atzīmēts kā izmantots
p = {}
p["code"] = "WIDGET10"
p["title"] = "Jūsu reklāmas kods"
p["note"] = "10% atlaide jebkuram pasūtījumam"
p["button"] = "Kopēt kodu"
w = tg_send_widget(platform_id, "promo", p, "Jūsu reklāmas kods WIDGET10 — 10% atlaide")
client.promo_widget_id = w['result']['message_id']

Lai atzīmētu kodu kā izmantotu, kas pārsvītro kodu un noņem pogu:

p = {}
p["used"] = 1
t = tg_edit_widget_data(platform_id, client.promo_widget_id, p)

Atpakaļskaitīšanas taimeris — timer

Rāda atpakaļskaitīšanu līdz noteiktam datumam un laikam.

Atpakaļskaitīšana notiek klienta ierīcē. Bots nav iesaistīts taimera atjaunināšanā.

Atpakaļskaitīšanas taimeris

Parametrs Apraksts
until Mērķa datums un laiks formātā "DD.MM.YYYY HH:MM", izmantojot projekta laika joslu
seconds Alternatīvi, sekunžu skaits no logrīka nosūtīšanas brīža
title Taimera virsraksts. Noklusējums: “Piedāvājums beidzas pēc”
done Teksts, kas tiek rādīts, kad atpakaļskaitīšana beidzas
text Teksts, kas tiek rādīts zem atpakaļskaitīšanas
button, url Pogu etiķete un mērķa URL (tikai https://)
hide_button Iestatiet uz 1, lai paslēptu pogu, kad atpakaļskaitīšana beidzas

Jums jānorāda vai nu until, vai seconds.

p = {}
p["seconds"] = 7200
p["title"] = "Piedāvājums beidzas pēc"
p["button"] = "Apmeklēt vietni"
p["url"] = "https://salebot.pro"
w = tg_send_widget(platform_id, "timer", p, "Piedāvājums beidzas pēc 2 stundām")

Kad atpakaļskaitīšana sasniedz nulli, botam netiek nosūtīts ne ziņojums, ne atzvanīšana. Ja botam jāveic darbība, kad piedāvājums beidzas, izmantojiet parasto taimera savienojumu bota plūsmā.


Pasūtījuma statuss — order_status

Rāda pasūtījuma posmu sarakstu ar pašreizējo posmu izceltu.

Bots var atjaunināt posmu vietā, tāpēc klients vienmēr redz to pašu ziņojumu.

Pasūtījuma statuss: pirmais posms

Parametrs Apraksts
title Logrīka virsraksts
steps Posmu saraksts, no 1 līdz 12. Noklusējums: pieņemts, gatavojas, nodots kurjeram, ceļā, piegādāts
step Pašreizējā posma numurs, sākot no 1
text Teksts, kas tiek rādīts zem posmiem

Logrīka nosūtīšana:

p = {}
p["title"] = "Pasūtījuma statuss"
p["steps"] = ["Pieņemts", "Gatavojas", "Piegādāts"]
p["step"] = 1
p["text"] = "Jūsu pasūtījums ir pieņemts un tiek gatavots"
w = tg_send_widget(platform_id, "order_status", p, "Jūsu pasūtījums")
client.order_widget_id = w['result']['message_id']

Pārejiet uz nākamo posmu no jebkura cita bloka, piemēram, kad mainās darījuma posms, vadītājs nosūta komandu vai taimeris aktivizējas:

p = {}
p["step"] = 2
p["text"] = "Jūsu pasūtījums tiek gatavots un drīz tiks nodots kurjeram"
t = tg_edit_widget_data(platform_id, client.order_widget_id, p)

Pasūtījuma statuss: otrais posms

Paraksts zem logrīka nemainās, kad posms tiek atjaunināts. Izmantojiet neitrālu parakstu, piemēram, “Jūsu pasūtījums”, nevis “Statuss: Pieņemts”.


Bieži uzdotie jautājumi — faq

Rāda jautājumu sarakstu. Klienti var pieskarties jautājumam, lai izvērstu atbildi.

FAQ logrīks

Parametrs Apraksts
title Logrīka virsraksts
items Jautājumu un atbilžu pāru saraksts. Obligāts
p = {}
p["title"] = "Bieži uzdotie jautājumi"
p["items"] = [["Kā es varu samaksāt?", "Jūs varat maksāt ar karti. Maksājuma saite tiks nosūtīta uz šo tērzēšanu."], ["Cik ilgi notiek piegāde?", "Piegāde parasti aizņem 1–2 dienas vietēji un 3–7 dienas visā valstī."], ["Vai es varu atgriezt preci?", "Jā, 14 dienu laikā."]]
w = tg_send_widget(platform_id, "faq", p, "Atbildes uz bieži uzdotajiem jautājumiem")

Teksts tiek rādīts kā vienkāršs teksts. HTML tagi un cits marķējums netiek apstrādāti.


Viktorīna un aptauja — quiz

Rāda jautājumus ar vairāku atbilžu variantiem, vienu jautājumu vienlaikus.

Ja ir norādītas pareizās atbildes, logrīks darbojas kā viktorīna un aprēķina rezultātu. Bez pareizām atbildēm tas darbojas kā aptauja.

Viktorīnas jautājums

Parametrs Apraksts
title Virsraksts, kas tiek rādīts virs jautājumiem
questions Jautājumu saraksts. Obligāts
retry Iestatiet uz 1, lai beigās rādītu pogu “Mēģināt vēlreiz”
callback Pielāgots atzvanīšanas teksts, nevis widget_quiz_finished

Katrs jautājums ir vārdnīca, kas satur:

  • q — jautājuma teksts
  • options — atbilžu varianti
  • correct — pareizā atbilde, norādīta ar 1-bāzētu indeksu vai precīzu tekstu
p = {}
p["title"] = "Viktorīna: pārbaudi savas zināšanas"
p["retry"] = 1
p["questions"] = [{"q": "Cik ir 2 + 2?", "options": ["3", "4", "5"], "correct": 2}, {"q": "Kāda ir Francijas galvaspilsēta?", "options": ["Londona", "Parīze", "Berlīne"], "correct": "Parīze"}]
w = tg_send_widget(platform_id, "quiz", p, "Izpildi šo divu jautājumu viktorīnu!")

Lai izveidotu aptauju bez vērtēšanas, izlaidiet correct no katra jautājuma.

Pareizās atbildes tiek pārbaudītas platformā un netiek nosūtītas uz klienta ierīci.

Ko saņem bota plūsma

Atbildes uz atsevišķiem jautājumiem netiek nosūtītas sarunā.

Kad klients atbild uz pēdējo jautājumu, bots saņem atzvanīšanu widget_quiz_finished, un tiek aizpildīti šādi mainīgie:

Mainīgais Vērtība
widget_quiz_score Pareizo atbilžu skaits; tukšs aptaujām
widget_quiz_total Kopējais jautājumu skaits
widget_quiz_answers Izvēlēto opciju indeksi, piemēram, [2,2]

Lai apstrādātu rezultātu, izveidojiet savienojumu no bloka, kas nosūtīja viktorīnu, vai izmantojiet Sākuma nosacījuma bloku ar nosacījumu widget_quiz_finished.

Piemēra atbilde:

Jūsu rezultāts: #{widget_quiz_score} no #{widget_quiz_total} pareizām atbildēm

Viktorīnas rezultāts un bota atbilde


Kalendārs — calendar

Rāda mēneša kalendāru, kurā klienti var izvēlēties datumu un pēc tam laika nišu.

Tas aizstāj vairākas datuma un laika pogu lapas, ieskaitot “Atpakaļ” un “Tālāk” navigāciju.

Kalendārs: datuma un laika izvēle

Kalendārs atbalsta trīs režīmus.

Pielāgoti datumi un laiki

Pieejamie laiki vienmēr tiek nodoti caur parametru slots.

Vienādas laika nišas katru dienu — norādiet laiku sarakstu un datumu diapazonu:

p = {}
p["title"] = "Izvēlieties datumu un laiku"
p["name"] = "Konsultācija"
p["days"] = 10
p["slots"] = ["10:00", "12:00", "15:00"]
w = tg_send_widget(platform_id, "calendar", p, "Izvēlieties datumu un laiku")

Dažādas laika nišas konkrētiem datumiem — norādiet vārdnīcu, kas kartē datumus uz laiku sarakstiem. Pieejamie datumi tiek ņemti no vārdnīcas atslēgām:

p = {}
p["slots"] = {"20.11.2026": ["10:00", "12:00"], "21.11.2026": ["15:00"]}
w = tg_send_widget(platform_id, "calendar", p, "Izvēlieties datumu un laiku")
Parametrs Apraksts
slots Pieejamie laiki, kā saraksts vai vārdnīca, grupēta pēc datuma
days Pieejamo dienu skaits, sākot no šodienas
date_from, date_to Alternatīvi, datumu diapazona robežas formātā "DD.MM.YYYY"
dates Alternatīvi, konkrētu datumu saraksts
weekdays_off Nepieejamās nedēļas dienas: 1 = pirmdiena līdz 7 = svētdiena
title Norāde, kas tiek rādīta zem kalendāra režģa
name Rezervējamā vienuma vai pakalpojuma nosaukums; tiek rādīts pēc izvēles
change Iestatiet uz 1, lai pēc izvēles rādītu pogu “Izvēlēties citu laiku”
callback Pielāgots atzvanīšanas teksts, nevis widget_calendar_selected

Tikai datums

Nenorādiet slots, ja klientam ir jāizvēlas tikai datums.

p = {}
p["days"] = 45
p["weekdays_off"] = [7]
w = tg_send_widget(platform_id, "calendar", p, "Izvēlieties datumu")

Tiešsaistes rezervācija

Norādiet filiāli un pakalpojumu, un kalendārs automātiski iegūs pieejamos datumus un laika nišas no Pakalpojumu moduļa.

cal = {}
cal["company_id"] = comp_id
cal["service_ids"] = serv_id
cal["days_limit"] = 30
cal["name"] = serv_title
w = tg_send_widget(platform_id, "calendar", cal, serv_title)
Parametrs Apraksts
company_id Filiāles identifikators
service_ids Pakalpojums vai pakalpojumu saraksts
employee_id Darbinieka identifikators; ja nav norādīts, tiek izmantots jebkurš pieejamais darbinieks
days_limit Dienu skaits uz priekšu pieejamības meklēšanai. Noklusējums: 14
people_count Vietu skaits, kas nepieciešams grupas pakalpojumam
auto_booking Iestatiet uz 1, lai platforma automātiski izveidotu rezervāciju

Šie parametri ir tie paši, ko izmanto get_dates_for_booking un get_slots_for_booking.

Ko saņem bota plūsma

Atsevišķas datuma izvēles netiek nosūtītas uz sarunu.

Kad klients izvēlas laika nišu vai datumu, ja kalendārā nav laika nišu, bots saņem widget_calendar_selected atzvanu, un tiek aizpildīti šādi mainīgie:

Mainīgais Vērtība
widget_date Izvēlētais datums formātā DD.MM.YYYY
widget_time Izvēlētais laiks formātā HH:MM; tukšs kalendāriem, kuros ir tikai datums
widget_message_id Ziņojuma ID, kurā atrodas logrīks

Kalendārs: atlase pabeigta

Datuma un laika formāti ir tādi paši kā tie, ko pieņem create_booking un modify_booking_time.


Tiešsaistes rezervācija ar kalendāru: pilnīgs piemērs

Logrīks apstrādā datuma izvēli, laika nišas un navigāciju, samazinot nepieciešamo bota bloku skaitu.

1. bloks. Pakalpojuma izvēle

Izmantojiet Sākuma nosacījuma bloku ar nosacījumu "pierakstīties uz tikšanos".

Atbilde: "Izvēlieties pakalpojumu:"

Iestatiet pogu lauku uz #{srv_buttons}.

comp_id = 8
srv_data = get_services_for_booking(comp_id)
srv_kb = tools_make_button_str_checker(srv_data, 'title', 1)
srv_buttons = srv_kb['buttons']
srv_checker = srv_kb['checker']

2. bloks. Kalendārs

Atbilde: #{none}.

Savienojiet 1. bloku ar 2. bloku, izmantojot nosacījumu #{srv_checker}.

serv_id = tools_check_user_input(srv_data, question, 'title', 'id')
serv_title = tools_check_user_input(srv_data, question, 'title', 'title')
cal = {}
cal["company_id"] = comp_id
cal["service_ids"] = serv_id
cal["days_limit"] = 30
cal["name"] = serv_title
cal_sent = tg_send_widget(platform_id, "calendar", cal, serv_title)

3. bloks. Izveidot rezervāciju

Atbilde: #{none}.

Savienojiet 2. bloku ar 3. bloku, izmantojot nosacījumu widget_calendar_selected ar Precīzu atbilstību.

booking_date = widget_date
booking_time = widget_time
booking_result = create_booking(comp_id, serv_id, booking_date, booking_time, '')
booking_ok = booking_result['status']

4. bloks. Rezervācija apstiprināta

Savienojiet 3. bloku ar 4. bloku, izmantojot mainīgā nosacījumu booking_ok == True ar vienas sekundes aizkavi.

Atbilde:

Jūsu pieraksts ir apstiprināts: #{serv_title}, #{booking_date} plkst. #{booking_time}. Uz redzēšanos!

5. bloks. Laika niša vairs nav pieejama

Atbilde: #{none}.

Savienojiet 3. bloku ar 5. bloku, izmantojot mainīgā nosacījumu booking_ok != True ar vienas sekundes aizkavi.

Šis bloks atiestata esošo kalendāru, ļaujot klientam izvēlēties citu laiku un parādot kļūdas ziņojumu.

fix = {}
fix["reset"] = 1
fix["error"] = "Šī laika niša tikko tika rezervēta. Lūdzu, izvēlieties citu."
t = tg_edit_widget_data(platform_id, widget_message_id, fix)

Pievienojiet vēl vienu savienojumu no 5. bloka uz 3. bloku ar nosacījumu widget_calendar_selected.

Klients tagad var izvēlēties citu laiku tajā pašā kalendārā.

Vienkāršāka iespēja: automātiskā rezervācija

Pievienojiet šādu parametru kalendāra iestatījumiem:

cal["auto_booking"] = 1

Platforma izveidos rezervāciju uzreiz, kad klients izvēlēsies laiku.

Ja izvēlētā laika niša kļūst nepieejama, logrīks parāda kļūdu tieši.

widget_calendar_selected atzvana tiek nosūtīta tikai pēc veiksmīgas rezervācijas, kopā ar mainīgo widget_booking_id.

Izmantojot šo pieeju, 3. un 5. bloks nav nepieciešami.

Izmantojiet rezervāciju caur bota plūsmu (pirmā pieeja), ja nepieciešama priekšapmaksa vai pielāgotas pārbaudes pirms tikšanās apstiprināšanas.


Nosūtītā logrīka atjaunināšana

Izmantojiet šādu funkciju, lai atjauninātu logrīka datus:

tg_edit_widget_data(platform_id, message_id, data)
Parametrs Apraksts
message_id Logrīka ziņojuma ID, kas saglabāts, nosūtot to, vai iegūts no widget_message_id pēc mijiedarbības
data Vārdnīca, kas satur jaunās vērtības

Var atjaunināt tikai logrīka datus. Jūs nevarat mainīt jau nosūtīta logrīka izkārtojumu. Lai izmantotu citu izkārtojumu, nosūtiet jaunu logrīku.

Kā tiek lietoti atjauninājumi:

  • Akcijas kods, taimeris, pasūtījuma statuss, FAQ: jaunie dati pilnībā aizstāj iepriekšējo atjauninājumu. Trūkstošie lauki atgriežas pie sākotnējām vērtībām, kas norādītas, nosūtot logrīku. Tāpēc iekļaujiet katru lauku, kam jāatšķiras no sākotnējiem datiem, piemēram, gan step, gan text.
  • Viktorīna un kalendārs: jaunie dati tiek lietoti virs pašreizējā logrīka stāvokļa.

Īpaši atjaunināšanas parametri:

Veidne Dati Rezultāts
promo {"used": 1} Atzīmē akcijas kodu kā izmantotu
timer {"seconds": 600} vai {"until": "…"} Restartē atpakaļskaitīšanu
calendar {"reset": 1, "error": "message"} Notīra atlasi, atkārtoti atver kalendāru un parāda ziņojumu

Pielāgoti logrīki

Kad gatavās veidnes nav pietiekamas — piemēram, ja nepieciešams produktu katalogs ar iepirkumu grozu, zvaigžņu vērtējums vai cenu kalkulators — varat izveidot pielāgotu HTML logrīku.

Pielāgots logrīks: zvaigžņu vērtējums

Kā tas darbojas

  1. Izveidojiet logrīku kā vienu HTML failu, kas satur tā stilus un JavaScript.
  2. Saglabājiet kodu kā .txt failu projekta Failu sadaļā un nokopējiet faila URL. Uzglabāšanas sistēma nepieņem .html failus.
  3. Bota bloks nosūta logrīku, izmantojot URL, un nodod tā sākotnējos datus.
  4. Kad klients mijiedarbojas ar logrīku, bots saņem atzvanu, kas satur tekstu, kas definēts logrīka kodā.
  5. Apstrādes bloks aprēķina jaunos datus un nosūta tos atpakaļ logrīkam, kas atjaunina savu saskarni.

Pielāgota logrīka nosūtīšana

tg_send_widget_file(platform_id, url, data, caption)

Piemērs:

st = {}
st["rating"] = 0
w = tg_send_widget_file(platform_id, "https://files.mavibot.ai/…/rating.txt", st, "Novērtējiet savu pasūtījumu — pieskarieties zvaigznei")

Parametrs data ir vārdnīca, kas satur sākotnējo stāvokli, ko izmanto logrīka renderēšanai.

Mijiedarbību apstrāde

Kad klients mijiedarbojas ar pielāgotu logrīku, bots saņem atzvanu.

Tiek aizpildīti arī šādi mainīgie:

Mainīgais Vērtība
widget_data Pieprasījuma teksts, ko nosūtījis logrīks, piemēram, rate:4
widget_message_id Ziņojuma ID, kurā notika mijiedarbība
widget_query_id Pieprasījuma identifikators

Izveidojiet apstrādātāju, izmantojot Trigera bloku, un iespējojiet iestatījumu Triggers only on Callback.

Nosacījumam jāatbilst logrīka pieprasījuma tekstam.

Šāda veida bloks darbojas neatkarīgi no klienta pašreizējās pozīcijas bota plūsmā un nepārvieto viņu prom no pašreizējā soļa.

Svarīgi: Neizmantojiet Sākuma nosacījuma bloku, lai apstrādātu pielāgotu logrīku mijiedarbības. Logrīks paliek tērzēšanā, un klients var ar to mijiedarboties jebkurā laikā — pat aizpildot anketu, rezervējot tikšanos vai veicot maksājumu. Sākuma nosacījuma bloks novirzītu klientu uz apstrādātāju un pārtrauktu viņa pašreizējo soli.

Piemērs vērtējuma apstrādātājam:

Nosacījums (regulārā izteiksme):

^rate:[1-5]$

Kalkulators:

local a = splitter(widget_data, ":")
client.widget_rating = a[1]
st = {}
st["rating"] = client.widget_rating
t = tg_edit_widget_data(platform_id, widget_message_id, st)

Pielāgotu logrīku dati tiek pilnībā aizstāti atjauninājumu laikā. Vienmēr nosūtiet pilnu stāvokli, nevis tikai mainīto lauku.

Datu lieluma ierobežojums ir 1024 baiti.

Glabājiet lielus, statiskus datu kopumus (piemēram, produktu katalogus) logrīka kodā un nosūtiet tikai tās vērtības, kas mainās, izmantojot logrīka datus.

Atbildēšana uz logrīka pieprasījumu

Pēc noklusējuma logrīks nekavējoties saņem tukšu atbildi, un atjauninātie dati nonāk atsevišķā logrīka atjauninājumā.

Ja logrīkam ir nepieciešams saņemt datus tieši atbildē uz tā pieprasījumu, pieprasījuma tekstam jāsākas ar ?, piemēram:

?price

Šajā gadījumā apstrādes blokam ir jāizsauc šāda funkcija 15 sekunžu laikā:

tg_answer_widget_query(data)

Pretējā gadījumā logrīks parāda taimauta kļūdu.

Atbildes lieluma ierobežojums ir 1024 baiti.

Koda prasības

  • Viens fails: iekļaujiet stilus <style> un JavaScript <script> iekšpusē. Ārējos skriptus, stila lapas, fontus un attēlus nevar ielādēt. Attēliem jābūt iegultiem, izmantojot data: URL vai SVG.
  • Lieluma ierobežojumi: maksimāli 32 KB pirms saspiešanas un 4 KB pēc saspiešanas.
  • Nav ievades lauku: input, select, textarea un form elementi tiek noņemti. Tikai <button> elementi tiek atbalstīti kā interaktīvas vadīklas.
  • Nav tīkla pieprasījumu: fetch un līdzīgi API nedarbojas. Vienīgais veids, kā sazināties ar botu, ir TelegramWidget.request("text"), ar pieprasījuma lielumu 1–64 baiti.
  • Nav iekšējās ritināšanas: maksimālais logrīka augstums ir 600 pikseļi. Viss, kas pārsniedz šo, tiek apgriezts. Lai izveidotu karuseli, pārvietojiet karšu rindu, nevis izmantojiet ritināšanu.
  • Elementu piekļuve: izmantojiet document.getElementById. Piekļuve elementiem kā globāliem mainīgajiem, pamatojoties uz to ID, nedarbojas.
  • Telegram tēma: izmantojiet Telegram tēmas mainīgos, piemēram, var(--tg-theme-text-color), lai logrīks izskatītos pareizi gan gaišajā, gan tumšajā tēmā.
  • Logrīka dati: lasiet datus no TelegramWidget.chatData un pārzīmējiet logrīku, kad notiek chatDataChanged notikums.
  • Pieprasījumi: izsauciet request tieši lietotāja mijiedarbības apstrādātājā. Katrai mijiedarbībai ir atļauts tikai viens pieprasījums.

Logrīks nerāda kodēšanas kļūdas. Neatbalstītie elementi tiek klusi noņemti, un JavaScript kļūda var radīt tukšu logrīku. Vienmēr pārbaudiet logrīku Telegram pēc izmaiņu veikšanas.

Minimāls pielāgota logrīka piemērs

Zemāk redzamais piemērs parāda produktu, pogu, kas nosūta pieprasījumu botam, un groza skaitītāju, pamatojoties uz logrīka datiem.

<style>
body{margin:0;padding:14px}
.h{color:var(--tg-theme-hint-color);font-size:.85em}
button{width:100%;margin-top:8px}
</style>

<b>Margherita · $10</b>
<div class="h" id="c"></div>
<button id="add">Pievienot grozam</button>
<div class="h" id="e"></div>

<script>
var W=window.TelegramWidget,$=function(i){return document.getElementById(i)},busy=0;

function draw(){
  var s={};
  try{s=JSON.parse(W.chatData)||{}}catch(e){}
  $('c').textContent='Grozā: '+(s.count||0)
}

$('add').onclick=function(){
  if(busy)return;
  busy=1;
  $('e').textContent='';
  W.request('cart_add').then(
    function(){busy=0},
    function(x){
      busy=0;
      $('e').textContent='Kļūda: '+x.code
    }
  )
};

W.onEvent('chatDataChanged',draw);
draw();
</script>

Mavi un logrīki

Mavi var automātiski izveidot pilnus botu plūsmas ar logrīkiem.

Vienkārši aprakstiet, kas jums nepieciešams, parastā valodā.

Piemēram:

  • "Kad klients nosūta 'order', parādiet pasūtījuma statusa logrīku ar trim posmiem. Kad viņi nosūta 'ready', pārvietojiet pasūtījumu uz otro posmu."
  • "Izveidojiet pakalpojumu rezervācijas plūsmu: klienti izvēlas pakalpojumu, izmantojot pogas, pēc tam izvēlas datumu un laiku, izmantojot kalendāra logrīku."
  • "Izveidojiet zvaigžņu vērtējuma logrīku pasūtījumiem un saglabājiet izvēlēto vērtējumu klienta mainīgajā."

Mavi automātiski konfigurē gatavas veidnes.

Pielāgotiem logrīkiem Mavi raksta un pārbauda kodu, saglabā logrīka failu projektā un izveido blokus, kas nepieciešami logrīka nosūtīšanai un klientu mijiedarbības apstrādei.


Atsauce

Funkcijas

Funkcija Apraksts
tg_send_widget(platform_id, template, params, caption) Nosūta gatavu logrīka veidni
tg_send_widget_file(platform_id, url, data, caption) Nosūta pielāgotu logrīku no faila
tg_edit_widget_data(platform_id, message_id, data) Atjaunina datus esošajā logrīkā
tg_answer_widget_query(data) Atbild uz pielāgota logrīka pieprasījumu, kas sākas ar ?

Atzvanīšanas un mainīgie

Notikums Atzvanīšana Mainīgie
Viktorīna pabeigta widget_quiz_finished widget_quiz_score, widget_quiz_total, widget_quiz_answers
Datums un laiks izvēlēti kalendārā widget_calendar_selected widget_date, widget_time; arī widget_booking_id, ja ir iespējots auto_booking
Pielāgota logrīka mijiedarbība Pieprasījuma teksts, kas definēts logrīka kodā widget_data, widget_message_id, widget_query_id

Ja jūsu bots satur vairākas viktorīnas vai kalendārus, piešķiriet katram logrīkam unikālu atzvanīšanu, izmantojot parametru callback, lai jūs varētu tos atšķirt botu plūsmas nosacījumos.

Ierobežojumi

  • Logrīki darbojas tikai privātās Telegram tērzēšanās starp klientu un botu.
  • Katram klientam tiek saglabātas tikai piecas jaunākās viktorīnas un kalendāri. Vecāki pārstāj reaģēt uz mijiedarbību.
  • Visu klienta mainīgo notīrīšana botu plūsmā atspējo iepriekš nosūtītās viktorīnas un kalendārus.
  • Logrīka dati ir ierobežoti līdz 1024 baitiem.
  • Pieprasījumi no pielāgotiem logrīkiem ir ierobežoti līdz 64 baitiem.
  • Pielāgota logrīka pieprasījumi, kuriem nepieciešama tg_answer_widget_query, ir jāatbild 15 sekunžu laikā.

Problēmu novēršana

Problēma Cēlonis / Risinājums
Logrīks netiek nosūtīts, un mainīgais satur Unknown parameter… Veidne saņēma neatbalstītu parametru. Kļūdas ziņojumā ir uzskaitīti atļautie parametri
Kalendārs apstājas pēc datuma izvēles, nerādot laika slotus Parametrs slots netika norādīts
Pēc mijiedarbības ar logrīku bots pārstāj reaģēt uz pogām pašreizējā solī Mijiedarbības apstrādātājs izmanto Starta nosacījuma bloku. Aizstājiet to ar bezstāvokļa bloku ar nosacījumu
Pielāgots logrīks izskatās tukšs Logrīka kodā ir kļūda. Bieži cēlonis ir piekļuve elementam pēc tā ID, neizmantojot document.getElementById
Telegram rāda "Unsupported message" Klients izmanto novecojušu Telegram versiju
Bad Request: chat not found Logrīks tika nosūtīts ārpus Telegram, piemēram, no botu testēšanas loga