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.

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”.

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.

| 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ā.

| 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.

| 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)

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.

| 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.

| 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

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 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 |

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, gantext. - 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.

Kā tas darbojas
- Izveidojiet logrīku kā vienu HTML failu, kas satur tā stilus un JavaScript.
- Saglabājiet kodu kā
.txtfailu projekta Failu sadaļā un nokopējiet faila URL. Uzglabāšanas sistēma nepieņem.htmlfailus. - Bota bloks nosūta logrīku, izmantojot URL, un nodod tā sākotnējos datus.
- Kad klients mijiedarbojas ar logrīku, bots saņem atzvanu, kas satur tekstu, kas definēts logrīka kodā.
- 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, izmantojotdata: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,textareaunformelementi tiek noņemti. Tikai<button>elementi tiek atbalstīti kā interaktīvas vadīklas. -
Nav tīkla pieprasījumu:
fetchun līdzīgi API nedarbojas. Vienīgais veids, kā sazināties ar botu, irTelegramWidget.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.chatDataun pārzīmējiet logrīku, kad notiekchatDataChangednotikums. -
Pieprasījumi: izsauciet
requesttieš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 |