2017-01-16 13 views
9

テレグラムの複数の連絡先にメッセージを送信するボットを作成しています。 ユーザーはボットとの連絡を共有できます。次にgetUpdatesを使用して電話番号を取得します。 sendMessageメソッドを使用するにはchat_idが必要です。 彼の電話番号でユーザのchat_idを取得する方法は? これを行うにはこの方法よりも良い方法はありますか?テレグラムで電話番号のuser_idを取得する方法

+1

ボットは以前にボットに書き込んでいないユーザーに連絡することはできません。 –

+0

誰かがテレグラムに登録されている電話番号でボットに連絡先を送信した場合、連絡先に追加のフィールド「user_id」がありますが、前に述べたように、ボットは、前にボットに。 –

答えて

16

インターネットサービスが存続するためには、どんなタイプのスパムとでも戦う必要があります。結果として、テレグラムのボットはまだボットを使用していないユーザーにメッセージを送信することはできません。

ユーザーがボットの使用を開始したときにのみ、彼/彼女のchat_idが表示され、彼にメッセージが送信されます。

つまり、ユーザ(ユーザA)が別のユーザの詳細(この1つをユーザBと呼ぶ)をcontactに送信すると、ユーザBのuser_idが表示されます。彼/彼女は以前にボットを使用し始めていない限り、直接メッセージを送信します。

この現象により、回避策を講じて電話番号でユーザーに問い合わせるか、必要に応じて少なくともユーザーの電話番号を確認することができます。

これを行うには、まず、contactメッセージを作成する必要があります。ボットがメッセージを送信できる場合でも、誰がメッセージを送信したかは関係ありません。この考えは、電文がcontactメッセージのuser_idを記入するようにすることです。あなたはここに、このオブジェクトについて読むことができます。私たちが使用する必要がContact Object

方法がsendContactであり、ターゲットchat_idfirst_namephone_numberを必要とします。今度はfirst_nameには任意の文字列を指定でき、その値はプロセスには関係ありません。また、chat_idは、あなたのものであっても、ボットとの任意のユーザーのチャットを識別することができます。また、ボットが書き込みアクセス権を持つ管理者であるグループまたはチャネルの名前でもかまいません(例:@my_private_bot_channel)。要するに、ボットがメッセージを投稿できる場所。したがって、あなたはphone_numberを提供する必要があります。

メッセージを送信した後、あなたのロボットが投稿したばかりのMessageと一緒に、サーバーの応答が得られます。この新しく作成されたメッセージのcontactフィールドには、連絡先のユーザーに関する情報が含まれている可能性があります。おそらくユーザーのチャットIDと同じものである自分の電信書user_idとともに表示されます。

すぐにdeleteMessageメソッドでメッセージを削除できます。

には、以下の無地要求/応答形式でそうすることの一例ですが、あなたはおそらく、このためのフレームワークを使用する必要があります。

https://api.telegram.org/{BOT_TOKEN}/sendContact?chat_id=123456789&phone_number=+989123456789&first_name=Some+Random+String 

この要求に対する応答は以下の通りです:

{ 
    "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は私たちが興味を持っている部分です。あなたのメッセージを削除することができます。

+2

英語の文法が良くないと私は失礼です。私の文章のエディタは歓迎です –

+0

あなたの方法を共有してくれてありがとう。私はちょうど電話番号があればどのように電信のユーザのuser_idを得ることができます。メソッドを動作させるには、chat_idとuserのfirst_nameを渡す必要があるためです。 –

+1

@AlenooshBaghumian no! first_nameには任意の文字列を指定できます。 chat_idは自分のchat_idでもかまいません! –

1

問題があります:あなたがuser_idを持っていても、会話開始者としてボットからユーザーにメッセージを送信することはできません。

+0

@AnkitBajpaiはい、それは*質問*への答えを提供します。あなたがそれをすることができないと言って*答えです*。それが有用な答えだと思っていない場合は、その意見をダウンボントで反映させることができます。 – Servy

関連する問題