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

Pabal API

Pabal API (MTProto)

សម្រាប់ពេលបង្កើតកម្មវិធីអតិថិជនដែលភ្ជាប់ទៅម៉ាស៊ីនមេតាមរបៀបដូចកម្មវិធី៖ ព័ត៌មានការតភ្ជាប់ សោសាធារណៈរបស់ម៉ាស៊ីនមេ លំហូរការផ្ទៀងផ្ទាត់ update និងវិសាលភាពដែលគាំទ្រ។

កម្មវិធី Pabal ទំនាក់ទំនងជាមួយម៉ាស៊ីនមេតាម MTProto 2.0។ សូមអានឯកសារនេះ ពេលបង្កើតកម្មវិធីដែលភ្ជាប់តាមរបៀបដូចគ្នា — កម្មវិធីផ្សេង ស្វ័យប្រវត្តិកម្មដែលដំណើរការជាគណនីមនុស្ស ឬកម្មវិធីអតិថិជនសម្រាប់ការស្រាវជ្រាវ។ បើអ្នកបង្កើតបូត Bot API ដែលសាមញ្ញជាង គឺគ្រប់គ្រាន់ហើយ។

សូមអានឯកសាររបស់ Telegram ផងដែរ

ដោយសារ Pabal អនុវត្តតាមពិធីការសាធារណៈរបស់ Telegram និយមន័យលម្អិតនៃពិធីការ និង method គឺផ្អែកលើឯកសារ MTProto និង API methods។ ឯកសារនេះកត់ត្រាភាពខុសគ្នា និងវិសាលភាពដែលគាំទ្រ ពេលភ្ជាប់ទៅម៉ាស៊ីនមេ Pabal។

ព័ត៌មានការតភ្ជាប់

ធាតុតម្លៃ
អាសយដ្ឋាន122.34.175.215
ច្រក (port)8443 (TCP)
DCDC 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 ដូច្នេះលើកក្រោយនឹងមិនសួរលេខកូដទៀតទេ។ ឯកសារនេះជាកូនសោនៃគណនី សូមការពារវា។

លំហូរការចូលគណនី

1 · auth key (តែម្តង) req_pq_multi → req_DH_params set_client_DH_params auth key 2048 ប៊ីតការពារដោយសោសាធារណៈ 2 · ចូលគណនី (ម្តងក្នុងមួយ auth key) auth.sendCodeលេខទូរស័ព្ទ sentCodeTypeSmsSMS ឬអ្នកគ្រប់គ្រងបញ្ជូន SetUpEmailRequiredវិធីអ៊ីមែល → សួរអាសយដ្ឋាន account.sendVerifyEmailCodepurpose: loginSetup auth.signInphone_code ឬកូដអ៊ីមែល auth.authorizationចូលគណនីរួចរាល់ authorizationSignUpRequiredលេខថ្មី → auth.signUp(ឈ្មោះ) ពេលបានលេខកូដ
បង្កើត auth key ហើយចូលគណនីដោយលេខកូដ

ការពន្យល់ដ្យាក្រាម

  • ពីរដំណាក់កាល៖ ខាងលើជាដំណាក់កាលបង្កើត 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_type 2 = តូខឹន FCM, secret = សោឧបករណ៍ 256 បៃ) ម៉ាស៊ីនមេអ៊ិនគ្រីបសារ និងការហៅថ្មីៗ ដោយសោឧបករណ៍នោះ ហើយផ្ញើតាម FCM រីឯកម្មវិធីដែលភ្ញាក់ឡើង នឹងតាមទាន់ដោយ updates.getDifference។ push អាចទៅដល់តែកម្មវិធីដែល build ដោយគម្រោង Firebase របស់ប្រតិបត្តិករម៉ាស៊ីនមេប៉ុណ្ណោះ។
  • ការជូនដំណឹង push — iPhone៖ កម្មវិធី iPhone ចុះឈ្មោះពីរយ៉ាងដោយសំណើដដែល — token_type 1 (តូខឹនការជូនដំណឹង 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កំណត់ចំណាំ
មនុស្សចាប់ពី 100001peerUser។ @BotFather គឺ 100000
បូតប្រព័ន្ធលេខដូចមនុស្សuser.bot = true។ លេខនៅខាងមុខតូខឹន គឺជា ID បូត
ក្រុមមូលដ្ឋានចាប់ពី 1000001peerChat។ នៅក្នុង 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)
Updateupdates.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
420FLOOD_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) ត្រូវបានបង្កើតតាមរបៀបនោះ។ បើអ្នកជាប្រតិបត្តិករម៉ាស៊ីនមេ សូមមើល ការដំឡើងម៉ាស៊ីនមេ — ការភ្ជាប់កម្មវិធី។