Pabal API
Pabal API (MTProto)
សម្រាប់ពេលបង្កើតកម្មវិធីអតិថិជនដែលភ្ជាប់ទៅម៉ាស៊ីនមេតាមរបៀបដូចកម្មវិធី៖ ព័ត៌មានការតភ្ជាប់ សោសាធារណៈរបស់ម៉ាស៊ីនមេ លំហូរការផ្ទៀងផ្ទាត់ update និងវិសាលភាពដែលគាំទ្រ។
កម្មវិធី Pabal ទំនាក់ទំនងជាមួយម៉ាស៊ីនមេតាម MTProto 2.0។ សូមអានឯកសារនេះ ពេលបង្កើតកម្មវិធីដែលភ្ជាប់តាមរបៀបដូចគ្នា — កម្មវិធីផ្សេង ស្វ័យប្រវត្តិកម្មដែលដំណើរការជាគណនីមនុស្ស ឬកម្មវិធីអតិថិជនសម្រាប់ការស្រាវជ្រាវ។ បើអ្នកបង្កើតបូត Bot API ដែលសាមញ្ញជាង គឺគ្រប់គ្រាន់ហើយ។
ដោយសារ Pabal អនុវត្តតាមពិធីការសាធារណៈរបស់ Telegram និយមន័យលម្អិតនៃពិធីការ និង method គឺផ្អែកលើឯកសារ MTProto និង API methods។ ឯកសារនេះកត់ត្រាភាពខុសគ្នា និងវិសាលភាពដែលគាំទ្រ ពេលភ្ជាប់ទៅម៉ាស៊ីនមេ Pabal។
ព័ត៌មានការតភ្ជាប់
| ធាតុ | តម្លៃ |
|---|---|
| អាសយដ្ឋាន | 122.34.175.215 |
| ច្រក (port) | 8443 (TCP) |
| DC | DC 1 ដល់ 5 ប្រើអាសយដ្ឋានដូចគ្នាទាំងអស់។ អាចភ្ជាប់តាម DC ណាក៏បាន ហើយជាធម្មតាប្រើ 2 |
| ពិធីការ | MTProto 2.0, API layer 216 |
| របៀបដឹកជញ្ជូន | Abridged, Intermediate, Padded Intermediate, Full — នីមួយៗរួមទាំងការបិទបាំង (obfuscated2) |
| សោសាធារណៈរបស់ម៉ាស៊ីនមេ | server-key.pem · fingerprint 8724853375441383205 |
| api_id · api_hash | មិនត្រូវបានពិនិត្យទេ។ ដាក់តម្លៃណាក៏បាន |
ការដឹកជញ្ជូនតាម HTTP តាម WebSocket និង MTProxy មិនទាន់មាននៅឡើយទេ។ នាឡិការបស់ឧបករណ៍អតិថិជនត្រូវតែត្រឹមត្រូវ — ដោយសារលេខសារ MTProto បង្កើតចេញពីពេលវេលា បើនាឡិកាខុសច្រើន ម៉ាស៊ីនមេនឹងបោះចោលសារ។
សោសាធារណៈរបស់ម៉ាស៊ីនមេ
ពេលភ្ជាប់ជាលើកដំបូង កម្មវិធីអតិថិជន MTProto អ៊ិនគ្រីបការផ្លាស់ប្តូរ auth key ដោយសោសាធារណៈ RSA របស់ម៉ាស៊ីនមេ។ កម្មវិធីអតិថិជន Telegram បង្កប់សោសាធារណៈរបស់ Telegram ក្នុងខ្លួន ដូច្នេះដើម្បីភ្ជាប់ទៅ Pabal ត្រូវដាក់សោនេះជំនួស (ឬបន្ថែម)។ សោនេះការពារកុំឲ្យម៉ាស៊ីនមេផ្សេងក្លែងខ្លួនជាម៉ាស៊ីនមេ Pabal។
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA4hH74xPQsUwr/pyXPdF4tVicYr6QbfeDrKC7mUOVrPLSL4FtmgGn
w+O4u6lVvOf3Udd1KY6+OL4fUZdMBlLzwsoGLoniiVR09dnvyXHE8LhQSS+i1LmI
oJbhQwXplLnUJf272fLXkD23e7ppKLkjYk+jeYObueCy5HYMSThklVeXEzbZVGZv
47o/mjU2vyFoRpa6wCIE4rpj1UIPtOMpekMI/TocIlGVJ+ch6cAVNxIDro53a1eG
/1oZRLQH4oViEGxeMMjBMY5gk5HPkZvjbqy4h8TjXEz7O5o0BRsSqG/OPtP/dRQV
X4ewPhj2WCU4e6l5X59ZKIcv4sQLOwClqQIDAQAB
-----END RSA PUBLIC KEY-----
curl -s -o server-key.pem https://pabal.me/docs/server-key.pem
សោនេះត្រូវបានបង្កើតតែម្តង ពេលម៉ាស៊ីនមេបើកជាលើកដំបូង ហើយមិនផ្លាស់ប្តូរទេ។ សូមពិនិត្យថាតម្លៃ Loaded RSA key … (fingerprint …) ក្នុង log របស់ម៉ាស៊ីនមេ ដូចនឹង fingerprint ខាងលើ។
ការភ្ជាប់ដោយ Telethon
នេះជាឧទាហរណ៍នៃការចូលគណនីមនុស្ស ហើយផ្ញើ និងទទួលសារ ដោយប្រើ Telethon របស់ Python។ សូមចុះឈ្មោះគណនីក្នុងកម្មវិធីជាមុនសិន (មើលខាងក្រោម)។
# pabal_client.py — pip install telethon==1.42.0
# ដាក់ server-key.pem (សោសាធារណៈរបស់ម៉ាស៊ីនមេ ដែលបានទាញយកខាងលើ) ក្នុងថតដដែល
import asyncio
from telethon import TelegramClient, events
from telethon.crypto import rsa
rsa.add_key(open("server-key.pem").read(), old=False) # សោសាធារណៈរបស់ម៉ាស៊ីនមេ Pabal
client = TelegramClient("pabal", api_id=1, api_hash="0" * 32) # រក្សាទុកការចូលគណនីក្នុង pabal.session
client.session.set_dc(2, "122.34.175.215", 8443)
@client.on(events.NewMessage(incoming=True))
async def show(event):
sender = await event.get_sender()
print(f"{sender.first_name}: {event.raw_text}")
async def main():
await client.start(phone=lambda: input("លេខទូរស័ព្ទ (+8210…): ")) # បញ្ចូលលេខកូដតែម្តងលើកដំបូង
me = await client.get_me()
print(f"បានចូលគណនី៖ {me.first_name} (id {me.id})")
await client.send_message("BotFather", "/help")
await client.run_until_disconnected()
asyncio.run(main())
- សូមប្រើ Telethon 1.42។ វាជាកំណែដែលនិយាយ layer 216។ កំណែថ្មីជាងនេះ ព្យាយាមអានការឆ្លើយតបដោយ layer ខ្ពស់ជាង ហើយបរាជ័យដោយ
TypeNotFoundError។ - Telethon បានបិទការចុះឈ្មោះគណនីថ្មី (
sign_up())។ សូមចុះឈ្មោះក្នុងកម្មវិធី ឬហៅauth.signUpដោយផ្ទាល់។ - ការចូលគណនីត្រូវបានរក្សាទុកក្នុងឯកសារ
pabal.sessionដូច្នេះលើកក្រោយនឹងមិនសួរលេខកូដទៀតទេ។ ឯកសារនេះជាកូនសោនៃគណនី សូមការពារវា។
លំហូរការចូលគណនី
ការពន្យល់ដ្យាក្រាម
- ពីរដំណាក់កាល៖ ខាងលើជាដំណាក់កាលបង្កើត auth key សម្រាប់ការអ៊ិនគ្រីប (ពិធីការ) ហើយខាងក្រោមជាដំណាក់កាលចូលគណនី ដែលភ្ជាប់គណនីទៅនឹងសោនោះ (API)។ បណ្ណាល័យធ្វើដំណាក់កាលខាងលើឲ្យដោយស្វ័យប្រវត្តិ។
- ការចូលគណនីភ្ជាប់ទៅនឹង auth key៖ ទោះបើកវគ្គ (session) ច្រើនដោយសោដែលបានចូលគណនីម្តងហើយ វគ្គទាំងអស់នៅតែស្ថិតក្នុងស្ថានភាពចូលគណនី។ បើបាត់សោ (លុបឯកសារ session) ត្រូវចូលគណនីម្តងទៀត។
- ប្រតិបត្តិករម៉ាស៊ីនមេ ជាអ្នកកំណត់ផ្លូវដែលលេខកូដត្រូវទៅ៖ បើជា SMS ឬអ្នកគ្រប់គ្រងបញ្ជូន អ្នកនឹងទទួលបាន
sentCodeTypeSmsហើយបើជាអ៊ីមែល អ្នកនឹងទទួលបានsentCodeTypeSetUpEmailRequiredរួចកម្មវិធីអតិថិជនសួរអាសយដ្ឋានអ៊ីមែល ហើយហៅaccount.sendVerifyEmailCode(ជួរកណ្តាល)។ - បន្ទាត់ដាច់ៗពណ៌ក្រហម ជាផ្លូវសម្រាប់លេខថ្មី៖ បើលេខកូដត្រឹមត្រូវ តែគ្មានគណនី អ្នកនឹងទទួលបាន
authorizationSignUpRequiredហើយពេលហៅauth.signUpដោយដាក់ឈ្មោះ ការចុះឈ្មោះត្រូវបានបញ្ចប់។ ការចុះឈ្មោះអាចធ្វើបាន លុះត្រាតែបញ្ចូលលេខកូដត្រឹមត្រូវរួច។ - បូតចូលគណនីដោយហៅ
auth.importBotAuthorization(តូខឹនបូត) តែម្តង ជំនួសឲ្យដំណាក់កាលខាងក្រោម។
| កំហុស | ពេលណា |
|---|---|
PHONE_NUMBER_INVALID | លេខខុស ឬជាលេខថ្មី ខណៈម៉ាស៊ីនមេបិទការចុះឈ្មោះថ្មី |
PHONE_NUMBER_BANNED | លេខដែលប្រតិបត្តិករបានហាមឃាត់ ឬលេខរបស់គណនីដែលត្រូវបានផ្អាក (បើត្រូវបានលុបពេលកំពុងផ្អាក លំនាំដើម 1 ឆ្នាំ — ប្រតិបត្តិករអាចពន្យារ ឬកំណត់ជាគ្មានកំណត់) |
FLOOD_WAIT_n (420) | ស្នើលេខកូដញឹកញាប់ពេក។ ព្យាយាមម្តងទៀតក្រោយ n វិនាទី |
PHONE_CODE_INVALID | លេខកូដខុស (បើលើសចំនួនដងដែលបានកំណត់ វានឹងត្រូវចាក់សោ) |
PHONE_CODE_EXPIRED | លេខកូដផុតកំណត់ ឬត្រូវចាក់សោ ឬ phone_code_hash ដែលម៉ាស៊ីនមេមិនស្គាល់ — ចាប់ផ្តើមម្តងទៀតពី sendCode |
EMAIL_INVALID, EMAIL_NOT_ALLOWED | អាសយដ្ឋានអ៊ីមែលខុស / ជាគណនីដែលមានស្រាប់ ប៉ុន្តែមិនមែនជាអ៊ីមែលចូលគណនីដែលបានចុះបញ្ជី |
AUTH_KEY_UNREGISTERED (401) | ហៅ method ដែលតម្រូវឲ្យចូលគណនី ដោយប្រើសោដែលមិនទាន់ចូលគណនី |
នៅលើម៉ាស៊ីនមេដែលប្រតិបត្តិករបានបើកលេខសាកល្បង លេខក្នុងទម្រង់ +99966XYYYY អាចចូលគណនីដោយលេខកូដ XXXXX (X ប្រាំដង) ដោយមិនមានការបញ្ជូនលេខកូដពិតប្រាកដ។ វាជាមុខងារសម្រាប់តែម៉ាស៊ីនមេសម្រាប់ការអភិវឌ្ឍ ហើយត្រូវបានបិទនៅលើម៉ាស៊ីនមេផលិតកម្ម។
ការទទួល update
- ភ្លាមៗ៖ បើការតភ្ជាប់នៅបើក ម៉ាស៊ីនមេផ្ញើសារថ្មី ការកែ និងការលុប ភ្លាមៗជា
updateShortMessageឬupdates។ វគ្គដែលបានផ្ញើសំណើ ទទួលលទ្ធផលនោះជាការឆ្លើយតប RPC ដូច្នេះរឿងដដែលមិនមកម្តងទៀតជា push ទេ។ - pts៖ ការផ្លាស់ប្តូរនីមួយៗរបស់អ្នកប្រើម្នាក់ៗ មានលេខរៀង (pts)។ បើ pts ដែលកម្មវិធីអតិថិជនទទួលបានមានចន្លោះខ្វះ មានន័យថាវាបានខកខានអ្វីមួយ។
- ការតាមទាន់៖ ចងចាំ pts បច្ចុប្បន្នដោយ
updates.getStateហើយពេលភ្ជាប់ម្តងទៀត ទទួលសារថ្មី ការលុប និងអ្នកប្រើ និងក្រុមដែលពាក់ព័ន្ធ ក្នុងចន្លោះពេលនោះ ដោយupdates.getDifference(pts, date, qts)។ បើ pts ដែលកម្មវិធីអតិថិជនមាន នាំមុខម៉ាស៊ីនមេ (ឧ. ពេលទិន្នន័យម៉ាស៊ីនមេត្រូវបានកំណត់ឡើងវិញ) អ្នកនឹងទទួលបានdifferenceTooLongដូច្នេះសូមផ្ទុកបញ្ជីការសន្ទនាឡើងវិញ។ - ការជូនដំណឹង push — Android៖ កម្មវិធី Android ដែលគ្មានការតភ្ជាប់ ត្រូវបានដាស់ដោយ push របស់ Firebase។ ពេលកម្មវិធីចុះឈ្មោះដោយ
account.registerDevice(token_type2 = តូខឹន FCM,secret= សោឧបករណ៍ 256 បៃ) ម៉ាស៊ីនមេអ៊ិនគ្រីបសារ និងការហៅថ្មីៗ ដោយសោឧបករណ៍នោះ ហើយផ្ញើតាម FCM រីឯកម្មវិធីដែលភ្ញាក់ឡើង នឹងតាមទាន់ដោយupdates.getDifference។ push អាចទៅដល់តែកម្មវិធីដែល build ដោយគម្រោង Firebase របស់ប្រតិបត្តិករម៉ាស៊ីនមេប៉ុណ្ណោះ។ - ការជូនដំណឹង push — iPhone៖ កម្មវិធី iPhone ចុះឈ្មោះពីរយ៉ាងដោយសំណើដដែល —
token_type1 (តូខឹនការជូនដំណឹង APNs) និង 9 (តូខឹន VoIP របស់ PushKit) ហើយsecretរបស់ទាំងពីរ គឺជាសោឧបករណ៍ 256 បៃ របស់គណនីនោះ។ សារថ្មីត្រូវបានផ្ញើជាការជូនដំណឹង APNs ដែលអត្ថបទខាងក្រៅដែល Apple អាចមើលឃើញ មានត្រឹមឈ្មោះកម្មវិធី និងឃ្លាគ្មានខ្លឹមសារ ដូចជា «អ្នកមានការជូនដំណឹងថ្មី» ប៉ុណ្ណោះ រីឯសារត្រូវបានអ៊ិនគ្រីបដោយសោឧបករណ៍ ហើយដាក់ក្នុងpបន្ទាប់មកផ្នែកបន្ថែមការជូនដំណឹង (Notification Service Extension) របស់កម្មវិធី ដោះគ្រីប ហើយបង្ហាញ។ ការហៅបង្ហាញអេក្រង់ការហៅរបស់ CallKit តាម push VoIP (ចាប់ពី build ដែលប្រតិបត្តិករបានបើក VoIP ហើយមុននោះផ្ញើជាការជូនដំណឹង) ហើយអ្វីដែលបានអាន ឬលុបនៅលើឧបករណ៍ផ្សេង ត្រូវបានជូនដំណឹងតាម push ផ្ទៃខាងក្រោយ។ push អាចទៅដល់តែកម្មវិធីដែលចុះហត្ថលេខាដោយក្រុមដូចគ្នានឹងសោ APNs របស់ប្រតិបត្តិករម៉ាស៊ីនមេ ហើយមាន bundle ID ដូចគ្នាប៉ុណ្ណោះ។ ចំណែកtoken_typeផ្សេងទៀត គ្រាន់តែឆ្លើយboolTrueហើយមិនផ្ញើអ្វីទេ។ - បណ្ណាល័យដូចជា Telethon ធ្វើដំណើរការទាំងនេះដោយស្វ័យប្រវត្តិ។
ID និង peer
| គោលដៅ | ID | កំណត់ចំណាំ |
|---|---|---|
| មនុស្ស | ចាប់ពី 100001 | peerUser។ @BotFather គឺ 100000 |
| បូត | ប្រព័ន្ធលេខដូចមនុស្ស | user.bot = true។ លេខនៅខាងមុខតូខឹន គឺជា ID បូត |
| ក្រុមមូលដ្ឋាន | ចាប់ពី 1000001 | peerChat។ នៅក្នុង Bot API វាបង្ហាញជាលេខអវិជ្ជមាន (-chat_id) |
| សារ | លេខរៀងតែមួយសម្រាប់ម៉ាស៊ីនមេទាំងមូល | ក្នុងការសន្ទនា 1:1 ច្បាប់ចម្លងទាំងពីរមានលេខដូចគ្នា។ ដូច្នេះ សំណើដែលទទួលតែលេខសារដោយគ្មាន peer (messages.getMessages, messages.deleteMessages) ក៏ចង្អុលទៅសារតែមួយសម្រាប់មនុស្សទាំងពីរដែរ។ មានតែឆានែលប៉ុណ្ណោះដែលរាប់ដោយឡែកចាប់ពី 1 ក្នុងឆានែលនីមួយៗ |
សម្រាប់ access_hash សូមរក្សាទុកតម្លៃដែលម៉ាស៊ីនមេផ្តល់ឲ្យដូចដើម ហើយប្រើវា (វាមកជាមួយការស្វែងរកឈ្មោះអ្នកប្រើ បញ្ជីការសន្ទនា និង update)។
ឯកសារ
- ការបង្ហោះ៖ បង្ហោះជាផ្នែកៗ (មួយផ្នែករហូតដល់ 512KB និងរហូតដល់ 4,000 ផ្នែក) ដោយ
upload.saveFilePartហើយយោងវាដោយinputFileUploaded…។ ឯកសារដែលលើស 10MB ត្រូវបង្ហោះដោយupload.saveBigFilePart— ដោយសារវាប្រាប់ចំនួនផ្នែកជាមុន បើទំហំនោះម៉ាស៊ីនមេមិនទទួល វានឹងបដិសេធដោយFILE_TOO_BIGមុនពេលអ្នកផ្ញើអស់។ ផ្នែកនីមួយៗត្រូវបានសរសេរទៅថាសភ្លាមៗពេលមកដល់ ហើយត្រូវបានផ្គុំជាមួយគ្នា នៅពេលសារយោងទៅឯកសារនោះ។ - ការផ្ញើ៖ ក្នុង
messages.sendMediaប្រើinputMediaUploadedPhoto(រូបថតថ្មី),inputMediaPhoto(រូបថតដែលមាននៅលើម៉ាស៊ីនមេ),inputMediaUploadedDocument(ឯកសារថ្មី),inputMediaDocument(ឯកសារដែលមាននៅលើម៉ាស៊ីនមេ)។ មេឌៀផ្សេងទៀត នឹងទទួលMEDIA_INVALID។ អ្នកក៏អាចបង្ហោះទុកជាមុនដោយមិនទាន់ផ្ញើ តាមmessages.uploadMediaបានដែរ (media ដែលវាប្រគល់មកវិញ អ្នកគ្រាន់តែផ្ញើវាដដែលនៅពេលក្រោយ) ហើយmessages.sendMultiMediaត្រូវបានទទួល ប៉ុន្តែធាតុនីមួយៗទៅម្តងមួយៗ មិនបានផ្គុំជាបាច់ទេ (គ្មាន grouped_id)។ - ការទទួល៖ ក្នុង
upload.getFileប្រើinputPhotoFileLocation(រូបថតក្នុងសារ),inputDocumentFileLocation(ឯកសារក្នុងសារ),inputPeerPhotoFileLocation(រូបប្រវត្តិរូប)។ រហូតដល់ 1MB ក្នុងមួយដង។ ខាងទទួលក៏មិនផ្ទុកឯកសារទាំងមូលចូលក្នុងអង្គចងចាំដែរ គឺអានតែចន្លោះដែលបានស្នើប៉ុណ្ណោះ។ - រូបប្រវត្តិរូប៖
photos.uploadProfilePhoto,photos.updateProfilePhoto,photos.getUserPhotos,photos.deletePhotos។ - រូបថតត្រូវបានរក្សាទុកតែក្នុងទំហំដើមមួយប៉ុណ្ណោះ (មិនបង្កើតរូបតូច (thumbnail) ដាច់ដោយឡែកទេ)។ ឯកសារវិញ ត្រូវបានទុកដដែលដោយមិនប៉ះពាល់ ហើយ
documentAttribute*ដែលខាងផ្ញើភ្ជាប់មក ត្រូវបញ្ជូនទៅខាងទទួលជាបៃដដែល — ម៉ាស៊ីនមេមិនចាំបាច់យល់ពីរយៈពេលវីដេអូ ឬរលកសំឡេងទេ គ្រាន់តែបញ្ជូនបន្តដដែល។
វិសាលភាពដែលគាំទ្រ
ម៉ាស៊ីនមេមានកម្មវិធីដោះស្រាយ (handler) សម្រាប់ method ចំនួន 469 នៃ layer 216 ហើយទាំងអស់អាចអានសំណើបាន ប៉ុន្តែ method ដែលបានផ្ទៀងផ្ទាត់ពីដើមដល់ចប់ជាមួយកម្មវិធីអតិថិជនពិត មានតែ method ខាងក្រោមប៉ុណ្ណោះ។ method ផ្សេងទៀតឆ្លើយតាមទម្រង់ត្រឹមត្រូវ ប៉ុន្តែខ្លឹមសារអាចទទេ ឬមិនត្រូវបានកត់ទុក។
| វិស័យ | method ដែលបានផ្ទៀងផ្ទាត់ |
|---|---|
| ការតភ្ជាប់ | initConnection, invokeWithLayer, help.getConfig, auth.bindTempAuthKey (សោបណ្តោះអាសន្ន PFS), auth.exportAuthorization/importAuthorization |
| ការចូលគណនី | auth.sendCode, auth.signIn, auth.signUp, auth.logOut, auth.importBotAuthorization, account.sendVerifyEmailCode |
| អ្នកប្រើ និងទំនាក់ទំនង | users.getUsers, users.getFullUser, contacts.resolveUsername, contacts.importContacts, contacts.search |
| សារ | messages.sendMessage, messages.sendMedia (រូបថត និងឯកសារ), messages.getHistory, messages.getDialogs, messages.getMessages, messages.editMessage, messages.deleteMessages |
| ក្រុម | messages.createChat, messages.deleteChatUser, messages.editChatTitle (messages.addChatUser បានផ្ទៀងផ្ទាត់តែជាមួយកម្មវិធីផ្លូវការប៉ុណ្ណោះ) |
| បូត | messages.getBotCallbackAnswer, messages.setBotCallbackAnswer, សារដែលមានប៊ូតុង (reply_markup) |
| Update | updates.getState, updates.getDifference, push ភ្លាមៗ |
| ឯកសារ និងរូបថត | upload.saveFilePart, upload.saveBigFilePart (លើស 10MB), upload.getFile, photos.* (ខាងលើ) |
យើងក៏បានផ្ទៀងផ្ទាត់ថា Telegram Desktop 6.2.6 ផ្លូវការ ដំណើរការដោយមិនចាំបាច់កែប្រែ ចាប់ពីការចុះឈ្មោះ ការចូលគណនី ការសន្ទនា រូបថត ក្រុម រហូតដល់ការភ្ជាប់ឡើងវិញ។ method ប្រហែល 60 ដែលកម្មវិធីហៅពេលចាប់ផ្តើម ត្រូវបានពិនិត្យទម្រង់ការឆ្លើយតបដាច់ដោយឡែក។
អ្វីដែលបានបន្ថែមក្រោយមក — បញ្ជីឧបករណ៍ និងការធ្វើឲ្យចាកចេញ (account.getAuthorizations · account.resetAuthorization · auth.resetAuthorizations) ការនាំចេញទិន្នន័យរបស់កម្មវិធីកុំព្យូទ័រ (account.initTakeoutSession · invokeWithTakeout · invokeWithMessagesRange · account.finishTakeoutSession — 3 ដងក្នុងមួយថ្ងៃសម្រាប់គណនីនីមួយៗ បើលើសគឺ 420 TAKEOUT_INIT_DELAY_n) និងការប្តូរលេខ (account.sendChangePhoneCode · account.changePhone — 400 PHONE_CHANGE_DISABLED រហូតដល់ប្រតិបត្តិករបើក និង BOT_METHOD_INVALID សម្រាប់បូត) — ត្រូវបានផ្ទៀងផ្ទាត់ដោយការសាកល្បងរបស់ម៉ាស៊ីនមេ ប៉ុន្តែមិនទាន់ផ្ទៀងផ្ទាត់ពីដើមដល់ចប់ជាមួយកម្មវិធីពិតទេ។
កំហុស
កំហុសមកជា rpc_error ស្តង់ដារ (error_code + error_message)។ error_message ជានិច្ចជាអក្សរធំ លេខ និងសញ្ញាគូសក្រោម (PEER_ID_INVALID) ហើយពេលចាំបាច់ មាន : ការពន្យល់ ភ្ជាប់ពីក្រោយ។
| លេខកូដ | អត្ថន័យ |
|---|---|
400 | សំណើខុស — PEER_ID_INVALID, MESSAGE_ID_INVALID, MEDIA_INVALID, USERNAME_NOT_OCCUPIED … |
401 | ត្រូវចូលគណនី — AUTH_KEY_UNREGISTERED |
403 | គ្មានសិទ្ធិ — ឧ. ក្រុមដែលអ្នកមិនមែនជាសមាជិក |
406 | មិនទាន់អនុញ្ញាតនៅពេលនេះ — ឧបករណ៍ដែលចូលមិនទាន់គ្រប់ 24 ម៉ោង ព្យាយាមធ្វើឲ្យឧបករណ៍ផ្សេងចាកចេញ៖ FRESH_RESET_AUTHORISATION_FORBIDDEN |
420 | FLOOD_WAIT_n — រង់ចាំ n វិនាទី |
500 | កំហុសខាងក្នុងម៉ាស៊ីនមេ |
កំហុសការដឹកជញ្ជូន -404 | ម៉ាស៊ីនមេមិនស្គាល់ auth key នេះ — បង្កើតសោថ្មី ហើយចូលគណនីម្តងទៀត (សោអចិន្ត្រៃយ៍) ឬភ្ជាប់ (bind) ម្តងទៀត (សោបណ្តោះអាសន្ន) |
API នាឡិកា
/api/watch/v1/ របស់ម៉ាស៊ីនមេ គឺជាច្រកចូល HTTPS JSON សម្រាប់តែកម្មវិធី Apple Watch របស់ Pabal ប៉ុណ្ណោះ។ វាមានដាច់ដោយឡែក ព្រោះនាឡិកាមិនអាចប្រើ MTProto បាន ហើយវាមិនមែនជាលក្ខណៈបច្ចេកទេសសាធារណៈ ហើយនៅកំពុងរៀបចំ ដូច្នេះអាចផ្លាស់ប្តូរដោយគ្មានការជូនដំណឹងជាមុន។ បើចង់បង្កើតកម្មវិធីដែលភ្ជាប់ទៅ Pabal សូមប្រើ MTProto នៅក្នុងទំព័រនេះ។ ប្រតិបត្តិករម៉ាស៊ីនមេ សូមមើល ការដំឡើងម៉ាស៊ីនមេ — ច្រកចូលរបស់ Apple Watch។
អ្វីដែលមិនទាន់មាន
- ឆានែល និង supergroup (
channels.*ឆ្លើយតប ប៉ុន្តែមិនបង្ហាញត្រឹមត្រូវក្នុងកម្មវិធី) · ការសន្ទនាសម្ងាត់ · ការហៅជាក្រុម - សារវីដេអូ និងសារសំឡេងដែលចាក់ផ្ទាល់ក្នុងកម្មវិធី · អាល់ប៊ុមដែលបង្ហាញជាបាច់តែមួយ (grouped_id) · ស្ទីគ័រ · រូបតូច (thumbnail — ឯកសារមានតែច្បាប់ដើម)
- ការផ្ទៀងផ្ទាត់ 2 ជំហាន (SRP) — មិនអាចកំណត់បាន ហើយសកម្មភាពដែលតម្រូវឲ្យមានការផ្ទៀងផ្ទាត់ 2 ជំហាន ត្រូវបានបដិសេធ
- ការដឹកជញ្ជូនតាម HTTP និង WebSocket, MTProxy, ការផ្ញើ
msgs_ack, ការប្តូរ salt របស់ម៉ាស៊ីនមេជាទៀងទាត់ (salt ខុសត្រូវបានឆ្លើយតបដោយbad_server_salt) - ការបែងចែកទៅម៉ាស៊ីនមេច្រើន — ម៉ាស៊ីនមេមួយគ្រឿងទទួលបន្ទុក DC 1 ដល់ 5 ទាំងអស់
ដើម្បីភ្ជាប់កម្មវិធី Telegram ផ្លូវការទៅ Pabal
កម្មវិធី Telegram បង្កប់អាសយដ្ឋានម៉ាស៊ីនមេ និងសោសាធារណៈក្នុងខ្លួននៅពេល build។ ដូច្នេះ មិនមែនកែនៅអេក្រង់ការកំណត់ទេ គឺត្រូវកែកូដប្រភព ហើយ build ម្តងទៀត។ កម្មវិធី Pabal (Pabal.app) ត្រូវបានបង្កើតតាមរបៀបនោះ។ បើអ្នកជាប្រតិបត្តិករម៉ាស៊ីនមេ សូមមើល ការដំឡើងម៉ាស៊ីនមេ — ការភ្ជាប់កម្មវិធី។