Tworzę bota, aby wysłać wiadomość do wielu osób kontaktowych w Telegramie. użytkownik może udostępnić kontakt z botem. następnie używam getUpdates i otrzymuję numer telefonu. Do korzystania z metody sendMessage potrzebuję adresu chat_id. teraz, jak uzyskać chat_id użytkownika z jego numerem telefonu? Czy jest jakaś metoda lepsza niż ta metoda?Jak uzyskać user_id numeru telefonu w telegramie
Odpowiedz
Aby usługi internetowe mogły pozostać przy życiu, muszą walczyć z każdym rodzajem spamu. W rezultacie, boty Telegram nie mogą rozpocząć wysyłania wiadomości do użytkowników, którzy jeszcze nie zaczęli używać bota!
Tylko wtedy, gdy użytkownik zaczyna używać bota, można zobaczyć jego/jej chat_id
i wysłać do niego wiadomości.
Jeśli użytkownik (Użytkownik A) prześle Ci dane o innym użytkowniku (Nazwijmy to, Użytkownik B), zobaczysz user_id
użytkownika B. Jednak nadal nie możesz wysłać wiadomości bezpośrednio, chyba że on/ona również zaczęła wcześniej używać bota.
To zachowanie pozwala nam na obejście tego problemu i wysłanie zapytania do użytkowników za pomocą numeru telefonu lub przynajmniej potwierdzenie numeru telefonu użytkownika, jeśli jest to wymagane.
Aby to zrobić, najpierw należy utworzyć wiadomość o numerze contact
. Nie ma znaczenia, kto wysłał wiadomość, nawet bot może wysłać wiadomość. Chodzi o to, aby Telegram wypełnił user_id
nowej wiadomości o numerze contact
. Można przeczytać o tym obiekcie tutaj: Contact Object
Sposób musimy użyć jest sendContact i potrzebuje cel chat_id
, a first_name
i phone_number
. Teraz first_name
może być dowolnym ciągiem, a jego wartość jest nieistotna dla procesu. Ponadto, chat_id
może być identyfikacją każdego użytkownika z bota, nawet Twojego. Może to być również nazwa grupy lub kanału, w którym bot jest administratorem z dostępem do zapisu, na przykład @my_private_bot_channel
. Krótko mówiąc, wszędzie tam, gdzie bot może wysłać wiadomość. Musisz więc podać tylko phone_number
.
Po wysłaniu wiadomości otrzymasz odpowiedź serwera, wraz z Message, którą Twój bot właśnie opublikował. Pole contact
tego nowo utworzonego komunikatu zawiera informacje o użytkowniku, któremu właśnie udostępniono jego kontakt, prawdopodobnie wraz z jego telegramem user_id
, który jest tym samym, co identyfikator czatu użytkownika.
Zaraz potem możesz usunąć swoją wiadomość za pomocą metody deleteMessage.
Poniżej przedstawiono przykład takiego postępowania w zwykłym życzenie/format odpowiedzi, ale powinieneś użyć ramy to:
https://api.telegram.org/{BOT_TOKEN}/sendContact?chat_id=123456789&phone_number=+989123456789&first_name=Some+Random+String
Odpowiedzią na ten wniosek jest następujący:
{
"ok": true,
"result": {
"message_id": 12345678987654321,
"from": {
"id": 987654321,
"first_name": "The Bot Name",
"username": "mybot_bot"
},
"chat": {
"id": 123456789,
"first_name": "Your Chat Party",
"last_name": "Your Chat Party",
"type": "private"
},
"date": 1484612850,
"contact": {
"phone_number": "989123456789",
"first_name": "Some Random String",
"user_id": 654789321
}
}
}
"user_id": 654789321
to część, która nas interesuje. Teraz możesz usunąć swoją wiadomość.
Przepraszam za słabą gramatykę angielską. każdy edytor moich zdań jest mile widziany –
Dzięki za udostępnienie twojej metody. Jeśli mam tylko numer telefonu, w jaki sposób mogę uzyskać user_id użytkownika telegramu. Ponieważ musimy przekazać chat_id i first_name użytkownika, aby twoja metoda działała. –
@AlenooshBaghumian no! pamiętaj, że nazwa pierwsza może być dowolnym ciągiem. chat_id też może być twoim własnym chat_id! –
Występuje problem: nie możesz wysłać wiadomości z bota do użytkownika jako inicjatora rozmowy, nawet jeśli masz identyfikator użytkownika.
@AnkitBajpai Tak, to * stanowi * odpowiedź na pytanie. Mówienie, że nie możesz tego zrobić * jest odpowiedzią *. Jeśli nie sądzisz, że jest to przydatna odpowiedź, możesz to zlekceważyć. – Servy
- 1. Sprawdzanie numeru telefonu Javascriptu
- 2. jak odczytać facebook signed_request, aby uzyskać user_id
- 3. Weryfikacja numeru telefonu z Androidem
- 4. Programowanie programowego numeru telefonu urządzenia
- 5. Autoryzacja numeru telefonu w Firebase (z cyframi)
- 6. Formatowanie TextBox dla numeru telefonu w WPF
- 7. Sprawdzanie numeru telefonu w php codeigniter
- 8. Zmiana numeru telefonu w emulatorze - rozwój Android
- 9. Zablokowanie telefonu Android po wybraniu przez użytkownika numeru telefonu
- 10. Formatowanie numeru telefonu za pomocą Twig
- 11. Android: Wyszukiwanie kontaktu na podstawie numeru telefonu
- 12. Jak usunąć znaki numeryczne z numeru telefonu w celu-c?
- 13. Jak usunąć "+" i kod kraju z numeru telefonu?
- 14. Regex do sprawdzenia początek międzynarodowego numeru telefonu
- 15. C# Regex do sprawdzania numeru telefonu
- 16. Formatowanie numeru telefonu EditText jako typów użytkownika
- 17. Weryfikacja numeru telefonu z regex ruby
- 18. Jak zbudować łącza numeru telefonu na Androida, która zawiera rozszerzenie
- 19. Podkreślenie numeru telefonu i hiperłącza TextView
- 20. Jak uzyskać numer telefonu użytkownika Facebook w Androidzie
- 21. Jak uzyskać ostatnią cyfrę numeru
- 22. Jak uzyskać ostatnią cyfrę numeru
- 23. Uzyskaj nazwę kraju połączenia przychodzącego, korzystając z numeru telefonu?
- 24. Najszybszym sposobem sformatowania numeru telefonu w języku C#?
- 25. AngularJS - Sprawdzanie numeru telefonu w trzech polach wejściowych
- 26. Błąd w TextView z wykrywanie numeru telefonu IOS 9
- 27. Jak uzyskać numer telefonu odbiorcy SMS w Androidzie
- 28. Kolumna "user_id" w liście pól jest niejednoznaczna.
- 29. Jak uzyskać numer telefonu z połączenia przychodzącego?
- 30. Sprawdzanie poprawności numeru telefonu jQuery dozwolone spacje, minimum 8 cyfr
Bot nie może skontaktować się z użytkownikiem, który wcześniej nie napisał do bota. –
Jeśli ktoś wysyła kontakt do bota z numerem telefonu zarejestrowanym w telegramie, w kontakcie jest dodatkowe pole "identyfikator_użytkownika", ale jak wspomniałem wcześniej, twój bot nie może skontaktować się z tym użytkownikiem, jeśli użytkownik nie napisał do bota przed. –