ឯកសារអ្នកអភិវឌ្ឍន៍
ភាសាខ្មែរ

ការអភិវឌ្ឍបូត

ឯកសារយោង Bot API

យើងបានរៀបរាប់ពេញលេញនូវ method ដែល HTTP Bot API របស់ Pabal ទទួល object ដែលផ្ញើទៅមក និងកំហុសនានា។ វាត្រូវគ្នាជាមួយ Telegram Bot API។

HTTP Bot API របស់ Pabal ប្រើទម្រង់អាសយដ្ឋាន សំណើ ការឆ្លើយតប និងកំហុស ដូចគ្នានឹង Telegram Bot API។ ឯកសារនេះកត់ត្រាតែអ្វីដែល Pabal ទទួលពិតប្រាកដប៉ុណ្ណោះ។ method ដែលមិនមាននៅទីនេះ នឹងឆ្លើយត្រឡប់ 404 Not Found: method not found។ បើអ្នកទើបចាប់ផ្តើម សូមអានមេរៀនបង្កើតបូតជាមុនសិន។

ការផ្ញើសំណើ

https://pabal.me/bot<តូខឹន>/<method>
  • HTTP method៖ ទាំង GET និង POST ប្រើបាន។
  • វិធីបួនយ៉ាងដើម្បីផ្ញើប៉ារ៉ាម៉ែត្រ — query string (?chat_id=1&text=hi), application/x-www-form-urlencoded, application/json និង multipart/form-data ពេលបង្ហោះឯកសារ។ អាចប្រើលាយគ្នាបាន។
  • ប៉ារ៉ាម៉ែត្រជា object (reply_markup, commands, allowed_updates) ដាក់ជា object ឬ array ដូចដើម ក្នុងតួ JSON ហើយដាក់ជាខ្សែអក្សរ JSON ក្នុង form ឬ query។
  • ឈ្មោះ method មិនប្រកាន់អក្សរធំតូចទេ (sendMessage = sendmessage)។
  • ទំហំតួរហូតដល់ 12MB (បើលើស នឹងទទួល 413)។
  • ការទាញយកឯកសារ ប្រើអាសយដ្ឋានដាច់ដោយឡែក https://pabal.me/file/bot<តូខឹន>/<file_path> (getFile)។

ការឆ្លើយតប និងកំហុស

ការឆ្លើយតបជា JSON ជានិច្ច។ បើជោគជ័យ អ្នកទទួលបាន HTTP 200 និង result ហើយបើបរាជ័យ អ្នកទទួលបាន error_code ដែលដូចនឹងស្ថានភាព HTTP និង description សម្រាប់មនុស្សអាន។

{"ok": true, "result": { … }}
{"ok": false, "error_code": 400, "description": "Bad Request: chat not found"}
error_codeពេលណាឧទាហរណ៍ description
400ប៉ារ៉ាម៉ែត្រខុសBad Request: chat not found, Bad Request: message text is empty, Bad Request: message is not modified: …, Bad Request: message to edit not found, Bad Request: wrong file identifier/HTTP URL specified, Bad Request: query is too old and response timeout expired or query ID is invalid
401តូខឹនខុសUnauthorized
403គ្មានសិទ្ធិផ្ញើForbidden: bot can't initiate conversation with a user, Forbidden: bot is not a member of the group chat
404method ឬឯកសារដែលមិនមានNot Found: method not found
409ហៅ getUpdates ពេលមាន webhookConflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first
413តួលើស 12MBRequest Entity Too Large
500កំហុសខាងក្នុងម៉ាស៊ីនមេInternal Server Error

Pabal មិនទាន់មានការកំណត់ល្បឿនសម្រាប់សំណើទាំងអស់នៅឡើយទេ ប៉ុន្តែ method សំឡេងមានដែនកំណត់ប្រចាំម៉ោង ដូច្នេះអាចឆ្លើយ 429 Too Many Requests: retry after N (ការហៅជាសំឡេង)។ សូមសរសេរកូដឲ្យរង់ចាំរយៈពេល parameters.retry_after វិនាទី រួចផ្ញើម្តងទៀត ពេលទទួលបាន 429។

ការទទួល update

ប្រើវិធីមួយក្នុងចំណោមវិធីទាំងពីរ។ មិនអាចប្រើទាំងពីរក្នុងពេលតែមួយបានទេ។

getUpdates

POST/bot<តូខឹន>/getUpdates

ទាញយក update ដែលកំពុងរង់ចាំ (long polling)។ បើ webhook ត្រូវបានកំណត់ នឹងទទួលបាន 409។

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
offsetIntegerស្រេចចិត្តតែ update ដែលមានលេខស្មើ ឬធំជាងលេខនេះ។ update ដែលតូចជាងនេះ ត្រូវបានលុបដោយចាត់ទុកថា «បានទទួលហើយ»។ សូមផ្តល់ update_id + 1 ចុងក្រោយដែលបានដំណើរការ។
limitIntegerស្រេចចិត្ត1 ដល់ 100 · លំនាំដើម 100
timeoutIntegerស្រេចចិត្តចំនួនវិនាទីដែលត្រូវរង់ចាំ · 0 ដល់ 50 · លំនាំដើម 0។ យើងណែនាំ 25 ដល់ 30។
allowed_updatesArray of Stringស្រេចចិត្តប្រភេទដែលត្រូវទទួល (Update)។ បើទុកទទេ ទទួលប្រភេទលំនាំដើមទាំងអស់ (message, edited_message, callback_query)។ ប្រភេទសំឡេង មកតែពេលសរសេរឈ្មោះវាប៉ុណ្ណោះ។ បញ្ជីដែលបានផ្តល់ត្រូវបានរក្សាទុកជាការកំណត់របស់បូត ហើយត្រូវបានប្រើសម្រាប់ការហៅបន្ទាប់ និង webhook ផងដែរ (បើមិនផ្តល់ទេ តម្លៃមុននៅដដែល)

តម្លៃត្រឡប់៖ Array of Update

setWebhook

POST/bot<តូខឹន>/setWebhook

ទទួល update តាមអាសយដ្ឋាន HTTPS។ ការពន្យល់លម្អិតមាននៅក្នុងឯកសារ Webhook។

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
urlStringចាំបាច់អាសយដ្ឋានសាធារណៈ https://។ បើជាខ្សែអក្សរទទេ លុប webhook
secret_tokenStringស្រេចចិត្ត1 ដល់ 256 តួ A-Z a-z 0-9 _ -។ ផ្ញើក្នុង header សំណើ X-Telegram-Bot-Api-Secret-Token
allowed_updatesArray of Stringស្រេចចិត្តជ្រើសពី message, edited_message, callback_query។ បើទុកទទេ ទទួលទាំងបីនេះ។ ប្រភេទសំឡេង (voice_call, voice_call_tool_query, voice_call_transcript) មកតែពេលសរសេរឈ្មោះវាប៉ុណ្ណោះ។ បើមិនផ្តល់ទេ តម្លៃមុននៅដដែល
drop_pending_updatesBooleanស្រេចចិត្តបោះចោល update ដែលកំពុងរង់ចាំ
max_connectionsIntegerស្រេចចិត្ត1 ដល់ 100 · លំនាំដើម 40។ គ្រាន់តែរក្សាទុក ប៉ុន្តែការបញ្ជូនគឺម្តងមួយសម្រាប់បូតនីមួយៗ
certificateInputFileមិនគាំទ្រ400 — សូមប្រើវិញ្ញាបនបត្រសាធារណៈ
ip_addressStringមិនអើពើ

តម្លៃត្រឡប់៖ True

deleteWebhook

POST/bot<តូខឹន>/deleteWebhook

លុប webhook ហើយត្រឡប់ទៅ getUpdates វិញ។ ទោះគ្មាន webhook ក៏ជោគជ័យដែរ។

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
drop_pending_updatesBooleanស្រេចចិត្តបោះចោល update ដែលកំពុងរង់ចាំ

តម្លៃត្រឡប់៖ True

getWebhookInfo

GET/bot<តូខឹន>/getWebhookInfo

ស្ថានភាព webhook។ គ្មានប៉ារ៉ាម៉ែត្រ។ បើគ្មាន webhook url នឹងជាខ្សែអក្សរទទេ។

តម្លៃត្រឡប់៖ WebhookInfo

Method

Methodអ្វីដែលវាធ្វើ
getMeព័ត៌មានរបស់បូតខ្លួនឯង
sendMessageផ្ញើអត្ថបទ (រួមទាំងប៊ូតុង)
sendPhotoផ្ញើរូបថត
sendDocumentផ្ញើឯកសារ
sendLocationផ្ញើទីតាំង (រួមទាំងទីតាំងផ្ទាល់)
sendVenueផ្ញើទីកន្លែង (ទីតាំងដែលមានឈ្មោះ និងអាសយដ្ឋាន)
sendContactផ្ញើកាតទំនាក់ទំនង
editMessageLiveLocation · stopMessageLiveLocationផ្លាស់ទី ឬបញ្ឈប់ទីតាំងផ្ទាល់
editMessageTextកែអត្ថបទ និងប៊ូតុងនៃសារដែលបានផ្ញើ
editMessageCaptionកែការពិពណ៌នារូបថត
editMessageReplyMarkupកែតែប៊ូតុង
deleteMessageលុបសារ
answerCallbackQueryឆ្លើយតបការចុចប៊ូតុង
sendChatActionបង្ហាញ «កំពុងវាយ» (គ្រាន់តែទទួល)
getChatព័ត៌មានការសន្ទនា
getFileផ្លូវទាញយករូបថតដែលបានទទួល
setMyCommands · getMyCommands · deleteMyCommandsម៉ឺនុយពាក្យបញ្ជា
logOut · closeសម្រាប់ភាពត្រូវគ្នា (មិនធ្វើអ្វីទេ)
getUpdates · setWebhook · deleteWebhook · getWebhookInfoការទទួល update (ខាងលើ)
setVoiceCallSettings · getVoiceCallSettings · endVoiceCall · sendVoiceCallContext · getVoiceCallUsage · startVoiceCall · answerVoiceCallToolQuery · setVoiceCallApiKey · setVoiceCallMcpServer …បូតសំឡេង (សូមមើល ការហៅជាសំឡេង ខាងក្រោម)
អ្វីដែលអាចដាក់ក្នុង chat_id

ID របស់មនុស្ស (លេខវិជ្ជមាន) សម្រាប់ការសន្ទនា 1:1 · ID ក្រុម (លេខអវិជ្ជមាន) សម្រាប់ក្រុមមូលដ្ឋាន · ឬឈ្មោះអ្នកប្រើរបស់មនុស្ស ("@hana_lee")។ អ្នកអាចដឹងតម្លៃទាំងអស់នេះពី chat.id នៃ update។ ID ឆានែល និង supergroup (-100…) មិនទាន់មានទេ (400 chat not found)។

getMe

GET/bot<តូខឹន>/getMe

ប្រើដើម្បីពិនិត្យថាតូខឹនត្រឹមត្រូវឬអត់។ គ្មានប៉ារ៉ាម៉ែត្រ។

តម្លៃត្រឡប់៖ User — សម្រាប់បូត មានបន្ថែម can_join_groups (true), can_read_all_group_messages (true), supports_inline_queries (false), can_connect_to_business (false), has_main_web_app (false)។

sendMessage

POST/bot<តូខឹន>/sendMessage

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលត្រូវផ្ញើទៅ (មើលប្រអប់ខាងលើ)
textStringចាំបាច់1 ដល់ 4,096 តួ។ ផ្ញើជាអក្សរដូចដើម
reply_markupInlineKeyboardMarkup · ReplyKeyboardMarkup · ReplyKeyboardRemove · ForceReplyស្រេចចិត្តប៊ូតុង
disable_notificationBooleanស្រេចចិត្តផ្ញើដោយគ្មានសំឡេង
parse_mode, entities, reply_parameters, link_preview_options …មិនអើពើទទួល ប៉ុន្តែមិនប្រើ។ ទម្រង់អត្ថបទមិនត្រូវបានអនុវត្តទេ

តម្លៃត្រឡប់៖ Message ដែលបានផ្ញើ

ដើម្បីផ្ញើទៅមនុស្សម្នាក់ មនុស្សនោះត្រូវតែធ្លាប់ផ្ញើសារទៅបូតមុន (403 Forbidden: bot can't initiate conversation with a user)។ ដើម្បីផ្ញើទៅក្រុម បូតត្រូវតែជាសមាជិកនៃក្រុមនោះ។

sendPhoto

POST/bot<តូខឹន>/sendPhoto

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលត្រូវផ្ញើទៅ
photoInputFile ឬ Stringចាំបាច់ឯកសារដែលបង្ហោះដោយ multipart/form-data (រហូតដល់ 10MB, JPEG · PNG · GIF) ឬ file_id នៃរូបថតដែលបានទទួលពីមុន។ URL មិនទាន់ប្រើបានទេ
captionStringស្រេចចិត្ត0 ដល់ 1,024 តួ
reply_markupដូច sendMessageស្រេចចិត្ត
disable_notificationBooleanស្រេចចិត្ត

តម្លៃត្រឡប់៖ Message ដែលបានផ្ញើ (មាន file_id ថ្មីក្នុង photo)

sendDocument

POST/bot<តូខឹន>/sendDocument

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលត្រូវផ្ញើទៅ
documentInputFile ឬ Stringចាំបាច់ឯកសារដែលបង្ហោះដោយ multipart/form-data (គ្មានកំណត់ទម្រង់ រហូតដល់ 20MB) ឬ file_id នៃឯកសារដែលបានទទួលពីមុន។ URL មិនទាន់ប្រើបានទេ
filenameStringស្រេចចិត្តឈ្មោះដែលបង្ហាញដល់ខាងទទួល។ បើមិនដាក់ នឹងប្រើឈ្មោះឯកសារដែលបានបង្ហោះ
captionStringស្រេចចិត្ត0 ដល់ 1,024 តួ
reply_markupដូច sendMessageស្រេចចិត្ត
disable_notificationBooleanស្រេចចិត្ត
thumbnail, disable_content_type_detectionមិនអើពើទទួល ប៉ុន្តែមិនប្រើទេ

តម្លៃត្រឡប់៖ Message ដែលបានផ្ញើ (មាន file_id ថ្មីក្នុង document)

ទម្រង់ (mime_type) ត្រូវបានកំណត់ពីផ្នែកបន្ថែម (extension) នៃឈ្មោះឯកសារ។ ឯកសារដែលផ្ញើពីកម្មវិធី អាចធំរហូតដល់ 2GB ប៉ុន្តែអ្វីដែលបូតបង្ហោះ ឬទាញយកតាម HTTP មានកំណត់ត្រឹម 20MB ដូច Telegram ដែរ។

sendLocation

POST/bot<តូខឹន>/sendLocation

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលត្រូវផ្ញើទៅ
latitude, longitudeFloatចាំបាច់រយៈទទឹង (−90 ដល់ 90) និងរយៈបណ្តោយ (−180 ដល់ 180)។ បើក្រៅចន្លោះ នឹងទទួលបាន 400 Bad Request: GEO_POINT_INVALID
horizontal_accuracyFloatស្រេចចិត្តកាំលម្អៀង (ម៉ែត្រ · 0 ដល់ 1,500)។ បង្គត់ជាចំនួនគត់ពេលរក្សាទុក
live_periodIntegerស្រេចចិត្តបើផ្តល់ វាក្លាយជាទីតាំងផ្ទាល់៖ 60 ដល់ 86,400 វិនាទី ឬ 2147483647 (0x7FFFFFFF) ដើម្បីឲ្យនៅរហូតដល់បញ្ឈប់។ តម្លៃផ្សេងទៀតនឹងទទួលបាន 400 Bad Request: wrong live_period
headingIntegerស្រេចចិត្តទិសដៅធ្វើដំណើររបស់ទីតាំងផ្ទាល់ · 1 ដល់ 360 ដឺក្រេ
proximity_alert_radiusIntegerស្រេចចិត្តកាំនៃការជូនដំណឹងពេលខិតជិតរបស់ទីតាំងផ្ទាល់ (ម៉ែត្រ)។ រក្សាទុក និងបង្ហាញ ប៉ុន្តែមិនទាន់ផ្ញើការជូនដំណឹងនៅឡើយទេ
reply_markupដូច sendMessageស្រេចចិត្ត
disable_notificationBooleanស្រេចចិត្ត

តម្លៃត្រឡប់៖ Message ដែលបានផ្ញើ (មាន Location ក្នុង location)

sendVenue

POST/bot<តូខឹន>/sendVenue

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលត្រូវផ្ញើទៅ
latitude, longitudeFloatចាំបាច់ទីតាំងរបស់ទីកន្លែង (ដូច sendLocation)
titleStringចាំបាច់ឈ្មោះទីកន្លែង
addressStringចាំបាច់អាសយដ្ឋាន
foursquare_id, foursquare_typeStringស្រេចចិត្តលេខសម្គាល់ និងប្រភេទទីកន្លែងរបស់ Foursquare។ បញ្ជូនបន្តដូចដែលទទួលបាន
google_place_id, google_place_typeStringស្រេចចិត្តលេខសម្គាល់ និងប្រភេទទីកន្លែងរបស់ Google។ ប្រើតែពេលគ្មាន foursquare_id
reply_markupដូច sendMessageស្រេចចិត្ត
disable_notificationBooleanស្រេចចិត្ត

តម្លៃត្រឡប់៖ Message ដែលបានផ្ញើ (មាន Venue ក្នុង venue និងទីតាំងដដែលក្នុង location)

បើគ្មាន title ឬ address អ្នកនឹងទទួលបាន 400 Bad Request: title and address are required។

sendContact

POST/bot<តូខឹន>/sendContact

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលត្រូវផ្ញើទៅ
phone_numberStringចាំបាច់លេខទូរស័ព្ទ។ បញ្ជូនបន្តដូចដែលបានសរសេរ
first_nameStringចាំបាច់នាមខ្លួន
last_nameStringស្រេចចិត្តនាមត្រកូល
vcardStringស្រេចចិត្តព័ត៌មានបន្ថែមជាទម្រង់ vCard រហូតដល់ 64KB
reply_markupដូច sendMessageស្រេចចិត្ត
disable_notificationBooleanស្រេចចិត្ត

តម្លៃត្រឡប់៖ Message ដែលបានផ្ញើ (មាន Contact ក្នុង contact)

កាតទំនាក់ទំនងដែលបូតផ្ញើ មិនដែលមាន user_id ទេ ទោះបីលេខនោះជារបស់គណនី Pabal ក៏ដោយ — បូតគ្មានបញ្ជីទំនាក់ទំនងទេ ហើយបើបំពេញវា បូតអាចដឹងថាលេខមួយជារបស់នរណា ដោយផ្ញើកាតមួយសម្រាប់លេខនីមួយៗ។ បើគ្មាន phone_number ឬ first_name អ្នកនឹងទទួលបាន 400 Bad Request: phone_number and first_name are required។

editMessageLiveLocation

POST/bot<តូខឹន>/editMessageLiveLocation

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលមានសារនោះ
message_idIntegerចាំបាច់ទីតាំងផ្ទាល់ដែលត្រូវផ្លាស់ទី (ដែលបូតបានផ្ញើ)
latitude, longitudeFloatចាំបាច់ទីតាំងថ្មី
horizontal_accuracyFloatស្រេចចិត្តកាំលម្អៀង (ម៉ែត្រ · 0 ដល់ 1,500)
headingIntegerស្រេចចិត្តទិសដៅធ្វើដំណើរ · 1 ដល់ 360 ដឺក្រេ
proximity_alert_radiusIntegerស្រេចចិត្តកាំនៃការជូនដំណឹងពេលខិតជិត (ម៉ែត្រ)។ បើ 0 គឺបិទ
live_periodIntegerស្រេចចិត្តរយៈពេលចែករំលែកថ្មី ជាវិនាទីរាប់ពីពេលផ្ញើសារ។ មិនអាចពន្យារលើសរយៈពេលបច្ចុប្បន្នលើសពីមួយថ្ងៃទេ ហើយ 2147483647 មានន័យថារហូតដល់បញ្ឈប់
reply_markupInlineKeyboardMarkupស្រេចចិត្តប៊ូតុងថ្មី
inline_message_idStringមិនគាំទ្រគ្មានរបៀប inline ដូច្នេះ 400

តម្លៃត្រឡប់៖ Message ដែលបានកែ

ទីតាំងផ្ទាល់ដែលបានបញ្ចប់រួចហើយ — បានបញ្ឈប់ ឬអស់រយៈពេល — មិនអាចផ្លាស់ទី ឬធ្វើឲ្យរស់ឡើងវិញដោយពន្យាររយៈពេលបានទេ (400 Bad Request: message can't be edited)។ សារដែលមិនមែនជាទីតាំងផ្ទាល់ក៏ដូចគ្នាដែរ។

ការផ្លាស់ទីដែលកើតឡើងតិចជាង 10 វិនាទីក្រោយការផ្លាស់ទីចុងក្រោយដែលបានអនុវត្ត ឬផ្លាស់ទីតិចជាង 10m នឹងត្រូវម៉ាស៊ីនមេរំលងដោយមិនរក្សាទុក។ ការបញ្ឈប់ និងការប្តូររយៈពេល ឬកាំនៃការជូនដំណឹង តែងតែត្រូវបានអនុវត្ត។ ពេលរំលង Message ដែលត្រឡប់មកបង្ហាញទីតាំងចុងក្រោយដែលបានអនុវត្ត ដូច្នេះការផ្ញើរៀងរាល់ប៉ុន្មានវិនាទីម្តងគ្មានបញ្ហាទេ។

stopMessageLiveLocation

POST/bot<តូខឹន>/stopMessageLiveLocation

ប៉ារ៉ាម៉ែត្រគឺ chat_id, message_id និង reply_markup (ស្រេចចិត្ត)។ បញ្ឈប់ទីតាំងផ្ទាល់នៅកន្លែងចុងក្រោយ។ រយៈពេលចែករំលែកត្រូវបានបង្រួមមកត្រឹមពេលវេលាដែលកន្លងផុតពិតប្រាកដ ដូច្នេះគ្រប់កម្មវិធីបង្ហាញវាជាទីតាំងដែលបានបញ្ចប់។ បើបានបញ្ឈប់ ឬបញ្ចប់រួចហើយ អ្នកនឹងទទួលបាន 400 Bad Request: message is not modified: …។ តម្លៃត្រឡប់៖ Message ដែលបានកែ។

editMessageText

POST/bot<តូខឹន>/editMessageText

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
chat_idInteger ឬ Stringចាំបាច់ការសន្ទនាដែលមានសារនោះ
message_idIntegerចាំបាច់សារដែលត្រូវកែ (សារដែលបូតបានផ្ញើ)
textStringចាំបាច់អត្ថបទថ្មី 1 ដល់ 4,096 តួ
reply_markupInlineKeyboardMarkupស្រេចចិត្តប៊ូតុងថ្មី។ បើមិនដាក់ ប៊ូតុងនឹងបាត់ (ដូច Telegram)
inline_message_idStringមិនគាំទ្រគ្មានរបៀប inline ដូច្នេះ 400

តម្លៃត្រឡប់៖ Message ដែលបានកែ។ ការកែបង្ហាញក្នុងកម្មវិធីភ្លាមៗ ហើយសារដែលមនុស្សកែ មកដល់បូតជា edited_message។

បើអត្ថបទ និងប៊ូតុងដូចមុនទាំងស្រុង អ្នកនឹងទទួលបាន 400 Bad Request: message is not modified: … ហើយបើព្យាយាមកែសាររបស់អ្នកដទៃ នឹងទទួលបាន 400 Bad Request: message can't be edited។

editMessageCaption

POST/bot<តូខឹន>/editMessageCaption

ប៉ារ៉ាម៉ែត្រគឺ chat_id, message_id, caption (0 ដល់ 1,024 តួ · បើមិនដាក់ ការពិពណ៌នានឹងត្រូវលុប) និង reply_markup។ តម្លៃត្រឡប់៖ Message ដែលបានកែ។

editMessageReplyMarkup

POST/bot<តូខឹន>/editMessageReplyMarkup

ទុកអត្ថបទដដែល ហើយប្តូរតែប៊ូតុង។ ប៉ារ៉ាម៉ែត្រគឺ chat_id, message_id និង reply_markup (បើមិនដាក់ ប៊ូតុងនឹងត្រូវលុប)។ តម្លៃត្រឡប់៖ Message ដែលបានកែ។

deleteMessage

POST/bot<តូខឹន>/deleteMessage

ប៉ារ៉ាម៉ែត្រគឺ chat_id និង message_id។ លុបសារពីភាគីទាំងពីរនៃការសន្ទនា។ បើសារមិនមាន នឹងទទួល 400 Bad Request: message to delete not found។ តម្លៃត្រឡប់៖ True។

answerCallbackQuery

POST/bot<តូខឹន>/answerCallbackQuery

ឆ្លើយតបប៊ូតុងដែលមនុស្សបានចុច (CallbackQuery)។ អាចឆ្លើយបានក្នុងរយៈពេល 10 វិនាទី និងតែម្តងប៉ុណ្ណោះ។

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
callback_query_idStringចាំបាច់callback_query.id នៃ update
textStringស្រេចចិត្តអត្ថបទដែលលេចឡើងមួយភ្លែតនៅលើអេក្រង់
show_alertBooleanស្រេចចិត្តបើ true បង្ហាញជាប្រអប់ដែលមានប៊ូតុងយល់ព្រម
urlStringស្រេចចិត្តអាសយដ្ឋានដែលកម្មវិធីនឹងបើក
cache_timeIntegerស្រេចចិត្តចំនួនវិនាទីដែលកម្មវិធីចងចាំចម្លើយនេះ

តម្លៃត្រឡប់៖ True។ បើយឺតពេក ឬបានឆ្លើយរួចហើយ នឹងទទួល 400 Bad Request: query is too old and response timeout expired or query ID is invalid។

sendChatAction

POST/bot<តូខឹន>/sendChatAction

ទទួលដើម្បីភាពត្រូវគ្នា ហើយឆ្លើយត្រឡប់ True ប៉ុន្តែមិនទាន់បង្ហាញ «កំពុងវាយ…» ក្នុងកម្មវិធីនៅឡើយទេ។

getChat

GET/bot<តូខឹន>/getChat?chat_id=…

ប៉ារ៉ាម៉ែត្រគឺ chat_id (លេខ)។ បើជាមនុស្ស គឺមនុស្សនោះ ហើយបើជាក្រុម មានតែក្រុមដែលបូតជាសមាជិកប៉ុណ្ណោះ។ តម្លៃត្រឡប់៖ Chat។ បើមិនមាន ឬមើលមិនបាន នឹងទទួល 400 Bad Request: chat not found។

getFile

GET/bot<តូខឹន>/getFile?file_id=…

ទទួលផ្លូវសម្រាប់ទាញយក ដោយប្រើ file_id នៃរូបថតដែលបានទទួល។ តម្លៃត្រឡប់៖ File។ បន្ទាប់មក ទាញយកតាមអាសយដ្ឋាននេះ។

https://pabal.me/file/bot<តូខឹន>/<file_path>

file_id ក៏ជាសិទ្ធិក្នុងការយករូបថតនោះដែរ។ បើតម្លៃមិនត្រឹមត្រូវ នឹងទទួល 400 Bad Request: wrong file identifier/HTTP URL specified។

setMyCommands

POST/bot<តូខឹន>/setMyCommands

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
commandsArray of BotCommandចាំបាច់រហូតដល់ 100
language_codeStringស្រេចចិត្តរក្សាទុកជាបញ្ជីតាមភាសា។ បច្ចុប្បន្ន កម្មវិធីបង្ហាញតែបញ្ជីលំនាំដើម ដែលគ្មានលេខកូដភាសា
scopeBotCommandScopeមិនអើពើ

តម្លៃត្រឡប់៖ True។ បើម៉ឺនុយមិនត្រូវតាមច្បាប់ គ្មានអ្វីត្រូវបានរក្សាទុកទេ៖ 400 Bad Request: BOT_COMMAND_INVALID (ពាក្យបញ្ជា) · BOT_COMMAND_DESCRIPTION_INVALID (ការពិពណ៌នាទទេ ឬលើស 256 តួអក្សរ) · BOT_COMMANDS_TOO_MUCH (លើស 100)។

getMyCommands

GET/bot<តូខឹន>/getMyCommands

ប៉ារ៉ាម៉ែត្រគឺ language_code (ស្រេចចិត្ត)។ តម្លៃត្រឡប់៖ Array of BotCommand។

deleteMyCommands

POST/bot<តូខឹន>/deleteMyCommands

ប៉ារ៉ាម៉ែត្រគឺ language_code (ស្រេចចិត្ត)។ សម្អាតបញ្ជីនោះ។ តម្លៃត្រឡប់៖ True។

logOut · close

នៅ Telegram វាជា method ដែលប្រើពេលផ្លាស់ទៅម៉ាស៊ីនមេ Bot API មូលដ្ឋាន (local)។ នៅ Pabal គ្មានកន្លែងត្រូវផ្លាស់ទៅទេ ដូច្នេះវាគ្រាន់តែទទួល ហើយឆ្លើយត្រឡប់ True។ ដើម្បីធ្វើឲ្យតូខឹនលែងមានសុពលភាព សូមប្រើ /revoke របស់ BotFather។

Object

ស្រេចចិត្ត នៅក្បែរវាល មានន័យថាវាអាចមិនមាន។ វាលផ្សេងទៀតរបស់ Telegram ដែលមិនមាននៅទីនេះ Pabal មិនផ្ញើទេ។

Update

update ថ្មីមួយ។ វាមាន update_id និងមួយក្នុងចំណោមវាលខាងក្រោម។

វាលប្រភេទការពិពណ៌នា
update_idIntegerលេខដែលកើនឡើងម្តង 1។ ប្រើក្នុង offset នៃ getUpdates
message ស្រេចចិត្តMessageសារថ្មីដែលមកដល់បូត (1:1 ឬសារទាំងអស់ក្នុងក្រុមដែលបូតជាសមាជិក)
edited_message ស្រេចចិត្តMessageសារដែលត្រូវបានកែ
callback_query ស្រេចចិត្តCallbackQueryការចុចប៊ូតុង inline
voice_call ស្រេចចិត្តVoiceCallការចាប់ផ្តើម និងការបញ្ចប់នៃការហៅទៅបូតសំឡេង ឬការហៅដែលវាធ្វើ (មកតែពេលស្នើតាមឈ្មោះ)
voice_call_tool_query ស្រេចចិត្តVoiceCallToolQueryឧបករណ៍របស់បូតដែលម៉ូដែលហៅក្នុងពេលការហៅ (មកតែពេលស្នើតាមឈ្មោះ)
voice_call_transcript ស្រេចចិត្តVoiceCallTranscriptវេនមួយនៃកំណត់ត្រាសន្ទនាក្នុងពេលការហៅ (មកតែពេលស្នើតាមឈ្មោះ)

User

វាលប្រភេទការពិពណ៌នា
idIntegerID អ្នកប្រើ (មានន័យតែនៅក្នុងម៉ាស៊ីនមេនេះ)
is_botBooleantrue បើជាបូត
first_nameStringនាមខ្លួន។ បើជាគណនីដែលត្រូវបានលុប គឺ Deleted Account
last_name ស្រេចចិត្តStringនាមត្រកូល
username ស្រេចចិត្តStringឈ្មោះអ្នកប្រើ (គ្មាន @)

Chat

វាលប្រភេទការពិពណ៌នា
idIntegerID របស់មនុស្សនោះ (លេខវិជ្ជមាន) បើជាមនុស្ស ហើយលេខអវិជ្ជមាន បើជាក្រុមមូលដ្ឋាន
typeStringprivate ឬ group
title ស្រេចចិត្តStringឈ្មោះក្រុម (group)
first_name, last_name, username ស្រេចចិត្តStringឈ្មោះ និងឈ្មោះអ្នកប្រើរបស់ភាគីម្ខាងទៀត (private)

Message

វាលប្រភេទការពិពណ៌នា
message_idIntegerលេខសារនៅក្នុងការសន្ទនានេះ
from ស្រេចចិត្តUserអ្នកផ្ញើ
chatChatការសន្ទនាដែលមានសារនោះ
dateIntegerពេលវេលាផ្ញើ (វិនាទី Unix)
edit_date ស្រេចចិត្តIntegerពេលវេលាកែចុងក្រោយ
text ស្រេចចិត្តStringអត្ថបទ (មានជានិច្ច បើមិនមែនជាសាររូបថត ឯកសារ ទីតាំង ទីកន្លែង ឬទំនាក់ទំនង)
entities ស្រេចចិត្តArray of MessageEntityពាក្យបញ្ជា mention URL និង hashtag ក្នុងអត្ថបទ
photo ស្រេចចិត្តArray of PhotoSizeរូបថត (នៅ Pabal មានតែរូបដើមមួយ)
document ស្រេចចិត្តDocumentឯកសារ
location ស្រេចចិត្តLocationទីតាំង ឬទីតាំងផ្ទាល់។ សារទីកន្លែងក៏មានទីតាំងរបស់វានៅទីនេះដែរ
venue ស្រេចចិត្តVenueទីកន្លែង
contact ស្រេចចិត្តContactកាតទំនាក់ទំនង
caption ស្រេចចិត្តStringការពិពណ៌នារូបថត
caption_entities ស្រេចចិត្តArray of MessageEntityពាក្យបញ្ជា mention URL និង hashtag ក្នុងការពិពណ៌នា
reply_markup ស្រេចចិត្តInlineKeyboardMarkupប៊ូតុង inline ដែលភ្ជាប់នឹងសារ

MessageEntity

វាលប្រភេទការពិពណ៌នា
typeStringbot_command, mention, url, hashtag
offsetIntegerទីតាំងចាប់ផ្តើម (គិតជាឯកតាកូដ UTF-16)
lengthIntegerប្រវែង (គិតជាឯកតាកូដ UTF-16)

ម៉ាស៊ីនមេស្វែងរកពីក្នុងអត្ថបទ ហើយភ្ជាប់ដោយស្វ័យប្រវត្តិ។ entity ទម្រង់អត្ថបទ ដូចជាដិត និងទ្រេត មិនទាន់មាននៅឡើយទេ។

PhotoSize

វាលប្រភេទការពិពណ៌នា
file_idStringID សម្រាប់ទាញយក (getFile) និងផ្ញើម្តងទៀត (sendPhoto)
file_unique_idStringរូបថតដូចគ្នាមានតម្លៃដូចគ្នា ទោះបីបូតខុសគ្នាក៏ដោយ។ មិនអាចប្រើសម្រាប់ទាញយកបានទេ
width, heightIntegerទំហំគិតជាភីកសែល
file_sizeIntegerបៃ

Document

វាលប្រភេទការពិពណ៌នា
file_idStringID សម្រាប់ទាញយក (getFile) និងផ្ញើម្តងទៀត (sendDocument)
file_unique_idStringឯកសារដូចគ្នាមានតម្លៃដូចគ្នា ទោះបីបូតខុសគ្នាក៏ដោយ។ មិនអាចប្រើសម្រាប់ទាញយកបានទេ
file_nameStringឈ្មោះដែលខាងផ្ញើបានផ្តល់
mime_typeStringទម្រង់ដែលខាងផ្ញើបានប្រាប់
file_sizeIntegerបៃ

Location

វាលប្រភេទការពិពណ៌នា
latitude, longitudeFloatរយៈទទឹង និងរយៈបណ្តោយ
horizontal_accuracy ស្រេចចិត្តFloatកាំលម្អៀង (ម៉ែត្រ)
live_period ស្រេចចិត្តIntegerរយៈពេលចែករំលែករបស់ទីតាំងផ្ទាល់ ជាវិនាទីរាប់ពីពេលផ្ញើសារ។ ពេលបញ្ឈប់ វាត្រូវបានបង្រួមមកត្រឹមពេលវេលាដែលកន្លងផុតពិតប្រាកដ
heading ស្រេចចិត្តIntegerទិសដៅធ្វើដំណើរ · 1 ដល់ 360 ដឺក្រេ
proximity_alert_radius ស្រេចចិត្តIntegerកាំនៃការជូនដំណឹងពេលខិតជិត (ម៉ែត្រ)

ទីតាំងផ្ទាល់ដែលមនុស្សចែករំលែក នឹងមកដល់ម្តងទៀតជា edited_message រាល់ពេលម៉ាស៊ីនមេអនុវត្តការផ្លាស់ទីមួយ។

Venue

វាលប្រភេទការពិពណ៌នា
locationLocationទីតាំងរបស់ទីកន្លែង
titleStringឈ្មោះទីកន្លែង
addressStringអាសយដ្ឋាន
foursquare_id, foursquare_type ស្រេចចិត្តStringលេខសម្គាល់ និងប្រភេទទីកន្លែងរបស់ Foursquare
google_place_id, google_place_type ស្រេចចិត្តStringលេខសម្គាល់ និងប្រភេទទីកន្លែងរបស់ Google

Contact

វាលប្រភេទការពិពណ៌នា
phone_numberStringលេខ ដូចដែលអ្នកផ្ញើបានសរសេរ
first_nameStringនាមខ្លួន
last_name ស្រេចចិត្តStringនាមត្រកូល
user_id ស្រេចចិត្តIntegerគណនី Pabal ដែលមានលេខនោះ។ មានតែពេលអ្នកផ្ញើបានរក្សាទុកមនុស្សនោះក្នុងបញ្ជីទំនាក់ទំនងរបស់ខ្លួន ឬជាខ្លួនឯងផ្ទាល់
vcard ស្រេចចិត្តStringព័ត៌មានបន្ថែមជាទម្រង់ vCard

File

វាលប្រភេទការពិពណ៌នា
file_id, file_unique_idStringដូច PhotoSize
file_sizeIntegerបៃ
file_pathStringក្នុងទម្រង់ photos/<file_id>.jpg ឬ documents/<file_id>។ ភ្ជាប់វានៅក្រោយ /file/bot<តូខឹន>/ ដើម្បីទាញយក

CallbackQuery

វាលប្រភេទការពិពណ៌នា
idStringID ដែលត្រូវផ្តល់ទៅ answerCallbackQuery
fromUserអ្នកដែលចុចប៊ូតុង
message ស្រេចចិត្តMessageសារដែលមានប៊ូតុង
chat_instanceStringតម្លៃដែលតំណាងឲ្យការសន្ទនានោះ
data ស្រេចចិត្តStringcallback_data នៃប៊ូតុង

InlineKeyboardMarkup

inline_keyboard៖ Array of Array of InlineKeyboardButton — array ខាងក្រៅជាជួរ ហើយ array ខាងក្នុងជាប៊ូតុងនៃជួរមួយ។ សារមួយមានរហូតដល់ 100 ជួរ និង 100 ប៊ូតុង។

InlineKeyboardButton

វាលប្រភេទការពិពណ៌នា
textStringអត្ថបទប៊ូតុង
callback_data មួយក្នុងពីរStringតម្លៃដែលទៅដល់បូតពេលចុច · 1 ដល់ 64 បៃ
url មួយក្នុងពីរStringអាសយដ្ឋានដែលបើកពេលចុច

ប្រភេទផ្សេងទៀត ដូចជា switch_inline_query, web_app, login_url, pay មិនទាន់មានទេ (400)។

ReplyKeyboardMarkup

វាលប្រភេទការពិពណ៌នា
keyboardArray of Array of KeyboardButtonផ្ទាំងប៊ូតុងនៅក្រោមប្រអប់បញ្ចូល
resize_keyboard, one_time_keyboard, is_persistent, selective ស្រេចចិត្តBooleanសម្រួលទំហំ · លាក់ក្រោយប្រើម្តង · បង្ហាញជានិច្ច · តែចំពោះមនុស្សជាក់លាក់
input_field_placeholder ស្រេចចិត្តStringអត្ថបទណែនាំក្នុងប្រអប់បញ្ចូល

KeyboardButton

ខ្សែអក្សរមួយ ឬ object ដែលមាន text និងវាលស្រេចចិត្ត request_contact (ផ្ញើលេខទំនាក់ទំនងរបស់ខ្ញុំ) និង request_location (ផ្ញើទីតាំងរបស់ខ្ញុំ · Boolean)។

ReplyKeyboardRemove

{"remove_keyboard": true} — លាក់ផ្ទាំងប៊ូតុង។ selective ជាជម្រើស។

ForceReply

{"force_reply": true} — កម្មវិធីបើកប្រអប់បញ្ចូល ក្នុងស្ថានភាពឆ្លើយតបទៅសារនេះ។ selective និង input_field_placeholder ជាជម្រើស។

BotCommand

វាលប្រភេទការពិពណ៌នា
commandStringអក្សរឡាតាំងតូច លេខ និងសញ្ញាគូសក្រោម 1 ដល់ 32 តួ (គ្មាន /)
descriptionString1 ដល់ 256 តួ

WebhookInfo

វាលប្រភេទការពិពណ៌នា
urlStringអាសយដ្ឋាន webhook។ បើគ្មាន វាជាខ្សែអក្សរទទេ
has_custom_certificateBooleanfalse ជានិច្ច
pending_update_countIntegerចំនួន update ដែលកំពុងរង់ចាំការបញ្ជូន
ip_address ស្រេចចិត្តStringIP ដែលបានផ្ញើទៅចុងក្រោយ
last_error_date ស្រេចចិត្តIntegerពេលវេលានៃការបរាជ័យចុងក្រោយ (វិនាទី Unix)
last_error_message ស្រេចចិត្តStringមូលហេតុនៃការបរាជ័យចុងក្រោយ (បញ្ជី)
max_connections ស្រេចចិត្តIntegerតម្លៃដែលបានផ្តល់ទៅ setWebhook
allowed_updates ស្រេចចិត្តArray of Stringតម្លៃដែលបានផ្តល់ទៅ setWebhook

ការហៅជាសំឡេង

ទាំងនេះជា method ដែលមានតែក្នុង Pabal ប៉ុណ្ណោះ។ បូតសំឡេង គឺជាបូតដែលពេលមនុស្សហៅពីកម្មវិធី ម៉ូដែលសំឡេង AI ជាអ្នកឆ្លើយ ហើយ method ទាំងនេះប្រើដើម្បីរៀបចំការកំណត់របស់ម៉ូដែលនោះ និងគ្រប់គ្រងការហៅ។ អ្វីដែលត្រូវបើក របៀបបើក និងឧទាហរណ៍ មាននៅក្នុងការណែនាំ បូតសំឡេង។ method ទាំងនេះមានសូម្បីតែនៅលើម៉ាស៊ីនមេដែលសំឡេងបិទ ដូច្នេះអ្នកអាចអានការកំណត់បាន ប៉ុន្តែបើសំឡេងបិទ ឬប្រតិបត្តិករមិនទាន់អនុញ្ញាតបូត អ្នកមិនអាចផ្លាស់ប្តូរការកំណត់បានទេ លើកលែងតែការបិទ និងការលុប (403 VOICE_NOT_AVAILABLE)។

setVoiceCallSettings

POST/bot<តូខឹន>/setVoiceCallSettings

ផ្លាស់ប្តូរការកំណត់សំឡេងរបស់បូត។ មានតែអ្វីដែលបានផ្ញើទេដែលផ្លាស់ប្តូរ ហើយវាពិនិត្យទាំងមូល រួចសរសេរម្តងតែមួយ ឬបដិសេធទាំងអស់។ បូតនីមួយៗ 30 ដងក្នុងមួយម៉ោង (រួមជាមួយ @BotFather)។

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
enabledBooleanស្រេចចិត្តអាចបើកបានតែក្រោយពេលយល់ព្រមច្បាប់បូតសំឡេងនៅ @BotFather (403 VOICE_RULES_NOT_ACCEPTED)។ ការបិទធ្វើបានជានិច្ច
instructionsStringស្រេចចិត្តសេចក្តីណែនាំរបស់ម៉ូដែល រហូតដល់ 8,192 បៃ។ "" មានន័យថាលុប (មិនអាចធ្វើចំពោះបូត managed ដែលកំពុងបើកទេ)
greetingStringស្រេចចិត្តពាក្យស្វាគមន៍ដំបូង រហូតដល់ 512 បៃ។ បើ "" ម៉ូដែលស្វាគមន៍ដោយខ្លួនឯង
voiceStringស្រេចចិត្តid សំឡេង · លំនាំដើម kore (បញ្ជី)
languageStringស្រេចចិត្តko-KR (លំនាំដើម) · en-US · ja-JP · cmn-CN · fr-FR · es-US · id-ID · vi-VN · ar-EG (បញ្ជី)។ មិនប្រកាន់អក្សរធំតូចទេ ហើយ zh-CN ត្រូវរក្សាទុកជា cmn-CN។ បូតដែលមិនមែនជាភាសាកូរ៉េ ឬអង់គ្លេស ទទួលការហៅតែបន្ទាប់ពីប្រតិបត្តិករអានសេចក្តីណែនាំ និងពាក្យស្វាគមន៍ ហើយអនុញ្ញាតប៉ុណ្ណោះ
max_call_durationIntegerស្រេចចិត្តវិនាទី · ពី 60 ដល់ limits.max_call_duration
max_concurrent_callsIntegerស្រេចចិត្តពី 1 ដល់ limits.max_concurrent_calls
toolsArray of VoiceCallToolស្រេចចិត្តឧបករណ៍របស់បូតដែលម៉ូដែលហៅក្នុងពេលការហៅ៖ {"name", "description", "parameters"?, "timeout_ms"?}។ ច្បាប់នៅ ការកំណត់ឧបករណ៍។ ក្នុង form ជាខ្សែអក្សរ JSON
transcriptBooleanស្រេចចិត្តកុងតាក់កំណត់ត្រាសន្ទនា។ អាចបើកបានតែក្រោយលក្ខខណ្ឌម្ចាស់បូតប៉ុណ្ណោះ
modeStringស្រេចចិត្តmanaged (ម៉ូដែល AI របស់ Pabal) ឬ stream (របៀបសំឡេងដើម)
stream_url, stream_secretStringស្រេចចិត្តជាមួយ mode=stream។ សម្ងាត់ផ្ញើតែក្នុងតួសំណើប៉ុណ្ណោះ

តម្លៃត្រឡប់៖ True

getVoiceCallSettings

GET/bot<តូខឹន>/getVoiceCallSettings

គ្មានប៉ារ៉ាម៉ែត្រ។ ការកំណត់បច្ចុប្បន្ន ថាតើបូតអាចទទួលការហៅឥឡូវនេះឬអត់ (available, unavailable_reason) ដែនកំណត់របស់ម៉ាស៊ីនមេ បញ្ជីសំឡេង និងភាសា កន្លែងដែលសំណួរឧបករណ៍ និងកំណត់ត្រាសន្ទនាទៅ និងស្ថានភាពនៃសោផ្ទាល់ខ្លួន របៀបសំឡេងដើម និងម៉ាស៊ីនមេ MCP។ សោ និងសម្ងាត់មិនបង្ហាញទេ មានតែស្នាមម្រាមដៃ (fingerprint) ប៉ុណ្ណោះ។ វាលនានាមាននៅ បូតសំឡេង — មើលការកំណត់បច្ចុប្បន្ន។

តម្លៃត្រឡប់៖ VoiceCallSettings (object)

endVoiceCall

POST/bot<តូខឹន>/endVoiceCall

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
voice_call_idStringចាំបាច់voice_call.id
farewellBooleanស្រេចចិត្តលំនាំដើម true៖ ម៉ូដែលនិយាយលាខ្លីៗ រួចផ្តាច់ (បើមិនផ្តាច់ក្នុង 10 វិនាទី ម៉ាស៊ីនមេបញ្ចប់)។ បើ false ផ្តាច់ភ្លាម

តម្លៃត្រឡប់៖ True។ បើមិនមែនជាការហៅដែលកំពុងដំណើរការរបស់បូតនេះទេ នឹងទទួល 400 VOICE_CALL_NOT_FOUND។

sendVoiceCallContext

POST/bot<តូខឹន>/sendVoiceCallContext

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
voice_call_idStringចាំបាច់ការហៅដែលកំពុងតភ្ជាប់
textStringចាំបាច់កំណត់ចំណាំរបស់ម្ចាស់បូតសម្រាប់ម៉ូដែល។ រហូតដល់ 2,000 តួ · 6,144 បៃ ហើយត្រូវបានពិនិត្យតាមច្បាប់ខ្លឹមសារ
respondBooleanស្រេចចិត្តលំនាំដើម false។ បើ true ម៉ូដែលឆ្លើយតបភ្លាម

តម្លៃត្រឡប់៖ True។ មុនតភ្ជាប់៖ VOICE_CALL_NOT_ACTIVE · ការហៅសំឡេងដើម៖ VOICE_CONTEXT_NOT_SUPPORTED · វែងពេក៖ VOICE_CONTEXT_TOO_LONG · ហើយបើលើស 10 ក្នុងមួយនាទីសម្រាប់ការហៅមួយ៖ 429។

getVoiceCallUsage

GET/bot<តូខឹន>/getVoiceCallUsage

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
periodStringស្រេចចិត្តtoday (លំនាំដើម) ឬ month
monthStringស្រេចចិត្តYYYY-MM ប្រើតែជាមួយ period=month

តម្លៃត្រឡប់៖ period, from_date, to_date, calls, seconds, missed, refused (busy·budget·unavailable), platform_seconds, own_key_seconds, remaining_seconds_today (bot·owner) និង outbound (today·limits) សម្រាប់បូតដែលធ្លាប់បើកការហៅ — ព្រំដែនថ្ងៃគិតតាមតំបន់ម៉ោងរបស់ម៉ាស៊ីនមេ

startVoiceCall

POST/bot<តូខឹន>/startVoiceCall

បូតហៅទៅមនុស្សម្នាក់។ មានតែបូតដែលម្ចាស់បានបើកក្នុង @BotFather ហើយប្រតិបត្តិករបានពិនិត្យ ទេដែលអាចហៅបាន ហើយហៅតែមនុស្សដែលបានអនុញ្ញាតបូតនោះប៉ុណ្ណោះ។ ចម្លើយ និងរបៀបពិនិត្យសំណើ មាននៅ បូតសំឡេង — ហៅ។

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
user_idIntegerបាទ/ចាសមនុស្សដែលត្រូវហៅ
purposeStringបាទ/ចាសមួយដែលបូតបានជ្រើសក្នុងចំណោម reminder, wake_up, delivery, appointment
contextStringបាទ/ចាសអ្វីដែលមានតែម៉ូដែលដឹង រហូតដល់ 1,000 តួ និង 3,072 បៃ ពិនិត្យតាមច្បាប់ខ្លឹមសារ
max_durationIntegerស្រេចចិត្តរយៈពេលអតិបរមាក្រោយលើក គិតជាវិនាទី 30–300 (រហូតដល់ដែនកំណត់របស់បូត)។ លំនាំដើម 180
ring_timeoutIntegerស្រេចចិត្តវិនាទីរោទ៍ 30–45។ លំនាំដើម 40

តម្លៃត្រឡប់៖ {"voice_call_id": "…"} — មានន័យត្រឹមតែថាសំណើត្រូវបានទទួល ថាតើបានរោទ៍ និងមានគេលើកឬអត់ មកតាម update voice_call។ ការបដិសេធ៖ 403 VOICE_OUTBOUND_OFF: <មូលហេតុ>, 403 USER_UNAVAILABLE (ខ្លឹមសារដូចគ្នាជានិច្ច), 429, 503 VOICE_UNAVAILABLE។ មិនអាចហៅពីចម្លើយ webhook បានទេ។

answerVoiceCallToolQuery

POST/bot<តូខឹន>/answerVoiceCallToolQuery

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
tool_query_idStringចាំបាច់id នៃ VoiceCallToolQuery
resultString · Object · Arrayមួយក្នុងចំណោមពីរលទ្ធផលរបស់ឧបករណ៍ រហូតដល់ 16,384 បៃ
errorStringមួយក្នុងចំណោមពីរសារបរាជ័យរបស់បូត រហូតដល់ 512 បៃ

តម្លៃត្រឡប់៖ True។ ចម្លើយដំបូងគឺជាចម្លើយចុងក្រោយ។ បើយឺត៖ 400 TOOL_QUERY_EXPIRED: answered|timeout|cancelled|call_ended|unreachable · ID ដែលមិនស្គាល់៖ TOOL_QUERY_ID_INVALID · បើចម្លើយត្រូវបដិសេធ៖ TOOL_RESULT_EMPTY·TOOL_RESULT_INVALID·TOOL_RESULT_TOO_LONG·TOOL_ERROR_TOO_LONG·TOOL_RESULT_REFUSED: <កូដ>។ ចំពោះ POST សំណួរឧបករណ៍តាម webhook អ្នកក៏អាចឆ្លើយក្នុងតួនៃការឆ្លើយតបបានដែរ។

setVoiceCallApiKey · deleteVoiceCallApiKey

POST/bot<តូខឹន>/setVoiceCallApiKey

ប៉ារ៉ាម៉ែត្រប្រភេទចាំបាច់ការពិពណ៌នា
providerStringចាំបាច់google (សោ JSON របស់គណនីសេវា Vertex AI) ឬ openai (sk-…)
api_keyStringចាំបាច់សោ។ ផ្ញើតែក្នុងតួសំណើប៉ុណ្ណោះ (បើដាក់ក្នុង query នឹងទទួល 400) · រហូតដល់ 8KiB

តម្លៃត្រឡប់៖ True — រក្សាទុកតែក្រោយពេលឆ្លងកាត់វគ្គសាកល្បងរបស់ gateway ប៉ុណ្ណោះ។ API_KEY_INVALID, API_KEY_NO_REALTIME_ACCESS, 503 API_KEY_CHECK_UNAVAILABLE (មិនរក្សាទុក), 403 VOICE_OWN_KEY_NOT_AVAILABLE (ម៉ាស៊ីនមេនេះមិនទទួលសោផ្ទាល់ខ្លួនទេ)។ deleteVoiceCallApiKey គ្មានប៉ារ៉ាម៉ែត្រ ហើយត្រឡប់ True ជានិច្ច។ method ទាំងពីរមិនអាចហៅតាម bots.sendCustomRequest បានទេ ហើយ setVoiceCallApiKey ក៏មិនអាចហៅតាមការឆ្លើយតប webhook បានដែរ។ ព័ត៌មានលម្អិតនៅ សោម៉ូដែលផ្ទាល់ខ្លួន។

method ម៉ាស៊ីនមេ MCP

Methodប៉ារ៉ាម៉ែត្រតម្លៃត្រឡប់
setVoiceCallMcpServerlabel, url, auth (object) និងជាជម្រើស audience, allowed_tools, requested_level, timeout_ms, tools (សរសេរជាន់ការចាត់ថ្នាក់), declaration, auto_repinលទ្ធផលចុះឈ្មោះ (status, job_id)។ បើកន្លែងទទួលផ្លាស់ប្តូរ នឹងទទួល 400 MCP_CHANGE_NEEDS_CONFIRMATION រួចត្រូវបញ្ជាក់នៅ @BotFather
refreshVoiceCallMcpServerlabelពិនិត្យម្តងទៀត (refreshing: true, job_id)
deleteVoiceCallMcpServerlabelTrue — ធ្វើបានទោះបី MCP បិទក៏ដោយ
getVoiceCallMcpBindingគ្មានiss, sub (bot:<id>), issuer_document, jwks_uri, audiences
createVoiceCallMcpClientKeylabeljwk សាធារណៈ និង thumbprint (សោឯកជនមិនចេញពី Pabal ទេ)

auth និងសម្ងាត់ផ្ញើតែក្នុងតួសំណើប៉ុណ្ណោះ។ នៅលើម៉ាស៊ីនមេដែល MCP បិទ ឆ្លើយ 403 VOICE_NOT_AVAILABLE: MCP tools are not available on this server។ ព័ត៌មានលម្អិតនៅ បូតសំឡេង — ម៉ាស៊ីនមេ MCP។

ដើម្បីទទួល update សំឡេង

voice_call, voice_call_tool_query, voice_call_transcript មកតែពេលស្នើតាមឈ្មោះប៉ុណ្ណោះ — សូមសរសេរវាក្នុង allowed_updates នៃ getUpdates ឬ setWebhook។ បញ្ជីទទេមិនធ្វើឲ្យវាមកទេ ហើយអ្វីដែលកើតឡើងមុនពេលស្នើ មិនត្រូវបានរក្សាទុកទេ។ សំណួរឧបករណ៍មកជា POST ដាច់ដោយឡែក បើមាន webhook ហើយបើបានហៅ getUpdates ក្នុងរយៈ 15 វិនាទីចុងក្រោយ វានឹងនៅខាងមុខនៃ getUpdates បន្ទាប់។

VoiceCall

វាលប្រភេទការពិពណ៌នា
idStringid ការហៅ (លេខគោលដប់គ្មានសញ្ញា)
directionStringincoming (ការហៅទៅបូត) ឬ outgoing (ការហៅដែលបូតធ្វើ)។ មានជានិច្ច
eventStringstarted, ended, missed, refused ហើយសម្រាប់ការហៅដែលបូតធ្វើ គឺ started, ended, not_answered, failed
from ស្រេចចិត្តUserតែការហៅទៅបូត — អ្នកហៅ៖ id, is_bot, first_name, last_name, language_code។ គ្មានឈ្មោះអ្នកប្រើ និងលេខទូរស័ព្ទទេ
to ស្រេចចិត្តObjectតែការហៅដែលបូតធ្វើ — {"id": …} មានតែ id របស់អ្នកទទួលការហៅ
purpose ស្រេចចិត្តStringតែការហៅដែលបូតធ្វើ — គោលបំណងនៃសំណើ
dateIntegerពេលដែលវាកើតឡើង (វិនាទី Unix)។ started គឺពេលការផ្លាស់ប្តូរសោចប់ សម្រាប់ការហៅពីកម្មវិធី ហើយពេលសំឡេងរបស់នាឡិកាតភ្ជាប់ សម្រាប់ការហៅពី Apple Watch។ ended មកយឺតរហូតដល់ 10 វិនាទី នៅលើម៉ាស៊ីនមេដែលរង់ចាំកំណត់ត្រាសន្ទនា ឬបើករក្សាទុកការសន្ទនា។ ចំពោះការហៅដែលបូតធ្វើ ended នៃការហៅដែលបានលើកតែងតែមកយឺតរហូតដល់ 10 វិនាទី ទោះការកំណត់ម៉ាស៊ីនមេយ៉ាងណាក៏ដោយ ព្រោះម៉ាស៊ីនមេរង់ចាំការប្រើប្រាស់ពី gateway
max_duration ស្រេចចិត្តIntegerរយៈពេលអតិបរមានៃការហៅនេះ (វិនាទី) — started, ended
start_date, duration ស្រេចចិត្តIntegerពេលតភ្ជាប់ និងចំនួនវិនាទីដែលបានតភ្ជាប់ (តាមនាឡិកាម៉ាស៊ីនមេ) — ended
end_reason ស្រេចចិត្តStringcaller (callee សម្រាប់ការហៅដែលបូតធ្វើ), bot, max_length, failed, operator, suspended — ended, missed
refused_reason ស្រេចចិត្តStringbusy, budget, unavailable — refused
transcript ស្រេចចិត្តObject{"turns": [{"role", "text", "offset_ms"}], "truncated"} — ended · ពេលកំណត់ត្រាសន្ទនាបើក។ មិនដែលមានលើការហៅដែលបូតធ្វើទេ

VoiceCall គ្មានវាលដែលប្រាប់ថាអ្នកហៅបានជ្រើសរក្សាទុកការសន្ទនាឬអត់ទេ។ នេះជាចេតនា — អត្ថបទនោះជារបស់អ្នកហៅផ្ទាល់ ហើយមិនទៅដល់បូតទេ។ ដូច្នេះ នៅលើម៉ាស៊ីនមេដែលបើករក្សាទុកការសន្ទនា ended នៃការហៅទាំងអស់ដែលមិនមែនរបៀបសំឡេងដើម រង់ចាំស្មើៗគ្នា ហើយលេខនៃសារបន្ទាប់ពីកំណត់ត្រាការហៅ ធំជាងលេខនៃកំណត់ត្រាយ៉ាងហោចណាស់ 31 នៅគ្រប់ការហៅ (ព្រោះលេខត្រូវបានបម្រុងទុកជាមុន)។

VoiceCallToolQuery

វាលប្រភេទការពិពណ៌នា
idStringid ដែលត្រូវផ្តល់ទៅ answerVoiceCallToolQuery
voice_call_idStringid ការហៅ
fromUserអ្នកហៅ (វាលដូច VoiceCall)
nameStringឈ្មោះឧបករណ៍
argumentsStringអាគុយម៉ង់ ជាអត្ថបទនៃ object JSON (ម៉ាស៊ីនមេបានពិនិត្យ)
budget_msIntegerមីលីវិនាទីពីពេលទទួល រហូតដល់ពេលដែលចម្លើយត្រូវទៅដល់ម៉ាស៊ីនមេ

VoiceCallTranscript

វាលប្រភេទការពិពណ៌នា
voice_call_idStringid ការហៅ
seqIntegerលេខវេន
roleStringcaller ឬ bot
textStringអត្ថបទដែល AI សរសេរ។ បើមានលេខកាត ឬលេខអត្តសញ្ញាណផ្ទាល់ខ្លួន លេខទាំងនោះត្រូវជំនួសដោយ *
is_finalBooleantrue ជានិច្ច
offset_ms, dateIntegerមីលីវិនាទីចាប់ពីពេលសំឡេងការហៅចាប់ផ្តើម និងពេលវេលា

មកតែតាម HTTP Bot API ប៉ុណ្ណោះ។ ការហៅទាំងមូលមាននៅក្នុង transcript នៃ voice_call ដែលបានបញ្ចប់។

របៀបសំឡេងដើម (mode=stream)

ក្នុងរបៀបសំឡេងដើម សំឡេងនៃការហៅទៅម៉ាស៊ីនមេរបស់ម្ចាស់បូត ជំនួសម៉ូដែល AI របស់ Pabal។ ពេលអ្នកផ្ញើ mode=stream, stream_url=wss://…, stream_secret=… (ASCII ដែលបោះពុម្ពបាន 32 ដល់ 128 តួ តែក្នុងតួសំណើ) ទៅ setVoiceCallSettings gateway របស់ Pabal សាកតភ្ជាប់ទៅអាសយដ្ឋាននោះម្តង (probe) ហើយបើជោគជ័យ វាបើក។ ត្រូវការលក្ខខណ្ឌម្ចាស់បូត និង build កម្មវិធីដែលមានផ្ទាំងបញ្ជាក់សំឡេងដើម។ ការកំណត់ លទ្ធផល probe និងឧទាហរណ៍ មាននៅ បូតសំឡេង — របៀបសំឡេងដើម។

  • ការតភ្ជាប់៖ TLS 1.2 ឡើងទៅ · វិញ្ញាបនបត្រសាធារណៈដែលត្រូវនឹងឈ្មោះក្នុង URL · subprotocol pabal.voice.v1 · គ្មានការបង្ហាប់ · សារមួយរហូតដល់ 64KiB និងអត្ថបទរហូតដល់ 4KiB · គ្មានការបង្វែរទិស (redirect)។
  • ហត្ថលេខា៖ X-Pabal-Voice-Signature: t=…,nonce=…,call=…,v1=HMAC-SHA256(stream_secret, "pabal-voice-stream/1\n<t>\n<nonce>\n<call>\n<host>\n<path?query>")។ host គឺ host នៃ URL ដែលអ្នកបានប្រាប់។ ពិនិត្យ 300 វិនាទី · nonce ម្តងតែប៉ុណ្ណោះ · ប្រៀបធៀបជាបៃ · ថា start.call_id ដូច call ឬអត់ (លម្អិត)។
  • សំឡេង៖ សារអត្ថបទជាព្រឹត្តិការណ៍ JSON សារប្រព័ន្ធគោលពីរជា PCM16 little-endian · mono · 24 kHz។ សំឡេងរបស់អ្នកហៅជាបំណែក 20 ms (960 បៃ)។
  • Pabal → បូត៖ start (ម្តង) · live (សេចក្តីជូនដំណឹង AI បានបញ្ចប់) · សំឡេង · mark · cleared · buffer_full · stop (→ បិទ 1000)។
  • បូត → Pabal៖ ready (ក្នុង 3 វិនាទីក្រោយ start មុនគេបង្អស់) · សំឡេង (ក្រោយ live) · clear · mark · hangup។

ទម្រង់នៃសារនីមួយៗមាននៅក្នុងតារាងនៅ បូតសំឡេង — លក្ខណៈបច្ចេកទេស។

កំហុសរបស់ method សំឡេង

កូដកំហុស និងអត្ថន័យរបស់ method សំឡេងត្រូវបានប្រមូលទុកនៅ បូតសំឡេង — កំហុស។ 403 មានទម្រង់ Forbidden: <កូដ>: <ការពិពណ៌នា> (VOICE_RULES_NOT_ACCEPTED, VOICE_NOT_AVAILABLE, VOICE_SUSPENDED, VOICE_OWNER_TERMS_NOT_ACCEPTED, VOICE_OWN_KEY_NOT_AVAILABLE, VOICE_STREAM_NOT_AVAILABLE, VOICE_OUTBOUND_OFF) ចំណែក USER_UNAVAILABLE តែងតែជា Forbidden: USER_UNAVAILABLE ពិតប្រាកដ គ្មានការពិពណ៌នា ហើយពេលលើសដែនកំណត់ប្រចាំម៉ោង គឺ 429 ជាមួយ retry_after។

ភាពខុសគ្នាពី Telegram Bot API

  • ប្រភេទ update៖ មានតែ message, edited_message, callback_query និងប្រភេទបូតសំឡេងដែលមានតែក្នុង Pabal (voice_call, voice_call_tool_query, voice_call_transcript) ប៉ុណ្ណោះ។ គ្មានការបង្ហោះក្នុងឆានែល · inline query · ការទូទាត់ · ការបោះឆ្នោត · ការផ្លាស់ប្តូរសមាជិក (my_chat_member) ជាដើមទេ។
  • ទម្រង់អត្ថបទ៖ មិនអើពើ parse_mode និង entities ហើយផ្ញើអត្ថបទដូចដើម។ មានតែពាក្យបញ្ជា mention URL និង hashtag ប៉ុណ្ណោះដែលបង្ហាញដោយស្វ័យប្រវត្តិ។
  • ប្រភេទការសន្ទនា៖ មានតែ 1:1 និងក្រុមមូលដ្ឋាន។ គ្មានឆានែល · supergroup ឬប្រធានបទវេទិកា (forum topic) ទេ។
  • មេឌៀ៖ មានតែរូបថត · ឯកសារ (sendDocument) · ទីតាំង · ទីតាំងផ្ទាល់ · ទីកន្លែង និងទំនាក់ទំនង។ គ្មានសារដែលចាក់ជាវីដេអូ ឬសំឡេង · ស្ទីគ័រ · អាល់ប៊ុម (sendMediaGroup) · ការបោះឆ្នោត ឬការផ្ញើតាម URL ទេ។ ការបង្ហោះ និងទាញយកតាម HTTP មានកំណត់ត្រឹម 20MB។
  • ទីតាំង៖ ការជូនដំណឹងពេលខិតជិតរបស់ទីតាំងផ្ទាល់ (proximity_alert_radius) គ្រាន់តែរក្សាទុក មិនដែលផ្ញើទេ។ ការផ្លាស់ទីក្នុងរយៈ 10 វិនាទី ឬ 10m ត្រូវបានរំលងដោយមិនអនុវត្ត ហើយកាតទំនាក់ទំនងដែលបូតផ្ញើមិនមាន user_id ទេ។
  • បូតក្នុងក្រុម៖ គ្មាន privacy mode ដូច្នេះបូតទទួលសារទាំងអស់របស់ក្រុម។
  • ជួររង់ចាំ៖ update ដែលមិនទាន់ទាញយក ត្រូវបានរក្សាក្នុងអង្គចងចាំ រហូតដល់ 1,000 update ចុងក្រោយសម្រាប់បូតនីមួយៗ ហើយបាត់ពេលម៉ាស៊ីនមេចាប់ផ្តើមឡើងវិញ (Telegram រក្សាទុក 24 ម៉ោង)។
  • Webhook៖ ផ្ញើម្តងមួយតាមលំដាប់ (max_connections គ្រាន់តែរក្សាទុក) មិនទទួលវិញ្ញាបនបត្រដែលចុះហត្ថលេខាដោយខ្លួនឯង ហើយគ្មានការកំណត់លើច្រក។
  • ID៖ ID អ្នកប្រើ សារ និងឯកសារ មានន័យតែនៅក្នុងម៉ាស៊ីនមេនេះ។ ដោយសារគ្មានឆានែល និង supergroup ក៏គ្មាន ID ទម្រង់ -100… ដែរ។
  • method ដែលមិនមាន៖ អ្វីដែលមិនមានក្នុងបញ្ជីខាងលើ (forwardMessage, copyMessage, sendVideo, sendPoll, getChatMember, banChatMember, answerInlineQuery …) ឆ្លើយ 404 Not Found: method not found។