2016-01-08 10 views
5

App mit Ionic und haben ein PHP-API-Backend für diese App.Telegram API mit PHP nicht bot

Wir müssen Telegram API Messaging in dieser App integrieren, muss ich die API und nicht Bot verwenden, da wir die Benutzer Kontakte abrufen müssen, damit sie neue private Nachricht senden können.

Ich habe über 7 Stunden damit verbracht, nach Beispielen und Telegrammdokumenten zu suchen, kann aber immer noch keinen Weg finden, dies zu implementieren, ich wollte wissen, ob mir jemand in die richtige Richtung zeigen kann.

+0

Ich denke, wir hier ein kleines Missverständnis haben. Der Sinn von Telegram API besteht darin, Ihre eigene inoffizielle Telegram-Client-App zu erstellen! Sie benötigen also kein eigenes serverseitiges Backend, und wenn Sie dies tun, gibt es kein direktes Gespräch zwischen Ihrem Server und dem Telegram-Server. Es wird nur zwischen Client und Telegram API oder Client und Ihrem Backend gesprochen! –

Antwort

0

hier Start:

1) Zuerst Ihre eigene APP_ID erstellen, wie hier angegeben:

https://my.telegram.org/auth

2) Ihren eigenen Code schreiben die auth_key zu erreichen: siehe meine Erklärung hier:

How to implement authorization using a Telegram API?

3) Studieren Sie den Quellcode für Webogram, es ist im Grunde JavaScript, plus Sie können console.log-Nachrichten dort hinzufügen, wo Sie sie benötigen, um Ihnen eine Reihe von Schritten zu zeigen, die Sie benötigen, um zu verstehen, wie ein Telegramm funktioniert.

4) Unabhängig von der Entwicklungssprache, in der Sie sich am wohlsten fühlen, verwenden Sie diese, um eine eigene Implementierung eines Parsers für die Konvertierung binärer Datenströme in TL-Typen zu erstellen.

5) finden Sie in das folgende Protokoll (aus meiner modifizierten webogram), der Abfolge von Schritten gibt, nach meiner auth_keys zu erhalten:

ID time info log 
121 12:26:35.318 new Auth Auth successfull! dc= 2 mtproto.js:479:15 
127 12:26:35.325 CALL =>> API call help.getNearestDc Object { } Object { dcID: 2, createNetworker: true } mtproto.js:749:4 
128 12:26:35.327 enc-START [invokeWithLayer] 45 mtproto.js:753:7 
168 12:26:35.551 SEND POST XHR http://149.154.167.51/apiw1 [HTTP/1.1 200 OK 708ms] 
189 12:26:36.522 msg-r <<=m [msg_container] Object { _: "msg_container", messages: Array[2] } mtproto.js:1452:5 
190 12:26:36.523 msg-r <<=m [message] Object { _: "message", msg_id: "6242200678614200321", seqno: 1, bytes: 28, body: Object } mtproto.js:1452:5 
191 12:26:36.525 msg-r <<=m [new_session_created] Object { _: "new_session_created", first_msg_id: "6242200671500883244", unique_id: "645797764649391412", server_salt: "17212767594123551779" } mtproto.js:1452:5 
192 12:26:36.526 msg-r <<=m [message] Object { _: "message", msg_id: "6242200678630513665", seqno: 3, bytes: 28, body: Object } mtproto.js:1452:5 
193 12:26:36.528 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200671500883244", result: Object } mtproto.js:1452:5 
257 12:26:39.239 new Auth Auth successfull! dc= 4 mtproto.js:479:15 
270 12:26:59.606 CALL =>> API call auth.sendCode Object { phone_number: "2348022002298", sms_type: 5, api_id: 38665, api_hash: "880c7847a517fc455d7d54731e90ad4e", lang_code: "en-US" } Object { dcID: 2, createNetworker: true } mtproto.js:749:4 
321 12:27:00.048 SEND POST XHR http://149.154.167.51/apiw1 [HTTP/1.1 200 OK 422ms] 
328 12:27:00.981 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200779464550396", result: Object } mtproto.js:1452:5 
331 12:27:00.986 CALL =>> API call auth.sendCode Object { phone_number: "2348022002298", sms_type: 5, api_id: 38665, api_hash: "880c7847a517fc455d7d54731e90ad4e", lang_code: "en-US" } Object { dcID: "4", createNetworker: true, resultType: "auth.SentCode", messageID: "6242200779464550396" } mtproto.js:749:4 
332 12:27:00.987 enc-START [invokeWithLayer] 45 mtproto.js:753:7 
377 12:27:01.288 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 321ms] 
398 12:27:02.170 msg-r <<=m [msg_container] Object { _: "msg_container", messages: Array[2] } mtproto.js:1452:5 
399 12:27:02.171 msg-r <<=m [message] Object { _: "message", msg_id: "6242200787684582401", seqno: 1, bytes: 28, body: Object } mtproto.js:1452:5 
400 12:27:02.172 msg-r <<=m [new_session_created] Object { _: "new_session_created", first_msg_id: "6242200784556418516", unique_id: "13396961033572361155", server_salt: "7076519506215495914" } mtproto.js:1452:5 
401 12:27:02.173 msg-r <<=m [message] Object { _: "message", msg_id: "6242200787775901697", seqno: 3, bytes: 48, body: Object } mtproto.js:1452:5 
402 12:27:02.174 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200784556418516", result: Object } mtproto.js:1452:5 
407 12:27:02.344 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 25154ms] 
414 12:27:03.068 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200779464550396" } mtproto.js:1452:5 
420 12:27:15.639 CALL =>> API call auth.sendSms Object { phone_number: "2348022002298", phone_code_hash: "696b5befd8e809de81" } Object { dcID: "4", createNetworker: true, resultType: "auth.SentCode", messageID: "6242200784556418516" } mtproto.js:749:4 
468 12:27:15.924 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 457ms] 
475 12:27:17.154 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200848242727644", result: true } mtproto.js:1452:5 
482 12:27:27.511 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200848242727644" } mtproto.js:1452:5 
505 12:27:31.003 SEND POST XHR http://149.154.167.51/apiw1 [HTTP/1.1 200 OK 25161ms] 
511 12:27:40.133 CALL =>> API call auth.signIn Object { phone_number: "2348022002298", phone_code_hash: "696b5befd8e809de81", phone_code: "26914" } Object { dcID: "4", createNetworker: true, resultType: "Bool", messageID: "6242200848242727644" } mtproto.js:749:4 
560 12:27:40.454 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 756ms] 
567 12:27:41.223 msg-r <<=m [msg_container] Object { _: "msg_container", messages: Array[2] } mtproto.js:1452:5 
568 12:27:41.224 msg-r <<=m [message] Object { _: "message", msg_id: "6242200956100910081", seqno: 7, bytes: 80, body: Object } mtproto.js:1452:5 
569 12:27:41.225 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200954555850604", result: Object } mtproto.js:1452:5 
570 12:27:41.226 msg-r <<=m [message] Object { _: "message", msg_id: "6242200956751929345", seqno: 9, bytes: 88, body: Object } mtproto.js:1452:5 
571 12:27:41.227 msg-r <<=m [updates] Object { _: "updates", updates: Array[1], users: Array[0], chats: Array[0], date: 1453375666, seq: 2 } mtproto.js:1452:5 
579 12:27:41.758 CALL =>> API call updates.getState Object { } Object { noErrorBox: true } mtproto.js:749:4 
586 12:27:41.842 CALL =>> API call account.updateStatus Object { offline: false } Object { noErrorBox: true } mtproto.js:749:4 
594 12:27:41.850 CALL =>> API call messages.getDialogs Object { offset_date: 0, offset_id: 0, offset_peer: Object, limit: 20 } Object { timeout: 300 } mtproto.js:749:4 
655 12:27:42.965 CALL =>> API call messages.getAllStickers Object { hash: "" } Object { } mtproto.js:749:4 
696 12:27:43.920 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 908ms] 
712 12:27:44.613 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 303ms] 
727 12:27:46.488 msg-r <<=m [msg_container] Object { _: "msg_container", messages: Array[3] } mtproto.js:1452:5 
728 12:27:46.489 msg-r <<=m [message] Object { _: "message", msg_id: "6242200970862778369", seqno: 11, bytes: 36, body: Object } mtproto.js:1452:5 
729 12:27:46.489 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200960159395644", result: Object } mtproto.js:1452:5 
730 12:27:46.490 msg-r <<=m [message] Object { _: "message", msg_id: "6242200970891641857", seqno: 13, bytes: 776, body: Object } mtproto.js:1452:5 
731 12:27:46.492 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200960356118244", result: Object } mtproto.js:1452:5 
732 12:27:46.494 msg-r <<=m [message] Object { _: "message", msg_id: "6242200970897958913", seqno: 15, bytes: 16, body: Object } mtproto.js:1452:5 
733 12:27:46.495 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200960337591900", result: true } mtproto.js:1452:5 
740 12:27:46.567 msg-r <<=m [msg_container] Object { _: "msg_container", messages: Array[4] } mtproto.js:1452:5 
741 12:27:46.568 msg-r <<=m [message] Object { _: "message", msg_id: "6242200970862778369", seqno: 11, bytes: 36, body: Object } mtproto.js:1452:5 
742 12:27:46.569 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200960159395644" } mtproto.js:1452:5 
743 12:27:46.569 msg-r <<=m [message] Object { _: "message", msg_id: "6242200970891641857", seqno: 13, bytes: 776, body: Object } mtproto.js:1452:5 
744 12:27:46.570 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200960356118244" } mtproto.js:1452:5 
745 12:27:46.571 msg-r <<=m [message] Object { _: "message", msg_id: "6242200970897958913", seqno: 15, bytes: 16, body: Object } mtproto.js:1452:5 
746 12:27:46.572 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200960337591900" } mtproto.js:1452:5 
747 12:27:46.573 msg-r <<=m [message] Object { _: "message", msg_id: "6242200973791209473", seqno: 17, bytes: 76, body: Object } mtproto.js:1452:5 
748 12:27:46.574 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200964892679524", result: Object } mtproto.js:1452:5 
754 12:27:46.584 CALL =>> API call messages.getStickerSet Object { stickerset: Object } Object { } mtproto.js:749:4 
811 12:27:47.346 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 539ms] 
818 12:27:48.175 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242200981275507620", result: Object } mtproto.js:1452:5 
857 12:27:49.351 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 25141ms] 
864 12:27:57.219 msg-r <<=m [msgs_ack] Object { _: "msgs_ack", msg_ids: Array[0] } mtproto.js:1452:5 
870 12:28:04.673 CALL =>> API call messages.readHistory Object { peer: Object, max_id: 0 } Object { } mtproto.js:749:4 
908 12:28:04.860 CALL =>> API call messages.getHistory Object { peer: Object, offset_id: 16, add_offset: 0, limit: 20 } Object { timeout: 300, noErrorBox: true } mtproto.js:749:4 
922 12:28:05.713 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 367ms] 
929 12:28:06.096 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242201058769372356", result: Object } mtproto.js:1452:5 
936 12:28:15.702 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242201058769372356" } mtproto.js:1452:5 
977 12:28:16.122 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 25170ms] 
983 12:28:26.637 CALL =>> API call account.updateStatus Object { offline: true } Object { noErrorBox: true } mtproto.js:749:4 
1016 12:28:26.660 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 302ms] 
1023 12:28:27.062 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242201153183272948", result: true } mtproto.js:1452:5 
1030 12:28:41.985 msg-r <<=m [rpc_result] Object { _: "rpc_result", req_msg_id: "6242201153183272948" } mtproto.js:1452:5 
1071 12:28:42.421 SEND POST XHR http://149.154.167.91/apiw1 [HTTP/1.1 200 OK 25165ms] 
+1

Ihr Beispiel nicht mit PHP, Frage Autor fragte PHP Beispiel –

+0

Ja, er war in der Lage, es funktioniert zu bekommen. Er war nicht daran interessiert, nur zu kopieren, er wollte die Konzepte lernen, wie es funktioniert. Lernkonzepte erfordern keine einzige Sprache von Amy. –

+0

Ich wette der Fragesteller hat nichts bekommen.Was er gefragt hat, ist ein sehr einfaches Beispiel im PHP Format –

Verwandte Themen