2016-05-01 6 views
3

Ich versuche answerInlineQuery Methode zu verwenden, aber ich habe einen Fehler:Telegramm bietet api - QUERY_ID_INVALID in answerInlineQuery - Javascript

function(inlineQuery) { 
     var url = API_URL + '/answerInlineQuery', 
      params = {};  
     var inline_query_id = inlineQuery.id; 
     var results = [{ 
           "type":"location", 
           "id":"1", 
           "latitude":4.710989, 
           "longitude":-74.072092, 
           "title":"Bogotá" 
           }]; 

     params.inline_query_id = inline_query_id; 
     params.results = results; 

     request('post', url, JSON.stringify(params), function(data) { 
      if(data && data.ok){ 
       console.log('answerInlineQuery enviado'); 
      }else{ 
       console.log('Error enviando answerInlineQuery: ' + JSON.stringify(data)); 
      } 
     }); 
    }; 

Die Parameter, die ich schicke werden (formated mit JSON.stringify):

{ 
    "inline_query_id": "32021086267134929", 
    "results": [ 
    { 
     "type": "location", 
     "id": "1", 
     "latitude": 4.710989, 
     "longitude": -74.072092, 
     "title": "Bogotá" 
    } 
    ] 
} 

ich verwende Javascript mit einem POST Anforderungsfunktion zum Telegramm Bot-API und die Fehler, die ich habe, ist dies:

Error enviando answerInlineQuery: {"ok":false,"error_code":400,"description":"[Error : 400 : Bad Request: QUERY_ID_INVALID]"} 

Ich habe gerade diese Frage gesehen: telegram bot api python error, aber ich weiß nicht, wie json.dumps in Python funktioniert. Ich muss das korrekte "params" Format wissen, das ich an die API senden muss.

+0

Senden Sie die Antwort schnell genug? Telegramm gibt diesen Fehler auch, wenn diese Abfrage vor langer Zeit gesendet wurde. – ihoru

Antwort

2

Ich hatte 2 Probleme, keine stringf die "Ergebnisse" und stringfy die "params", die falsch war.

Ich brauchte nur stringfy die „Ergebnisse“ und nicht stringfy die „params“

3

Sie max 15 sec benachrichtigen nach Inline-Tastatur

+0

Können Sie Ihrer Antwort Code hinzufügen, um zu zeigen, wie das geht? –

0

geschoben senden sollte ich die richtige Antwort bin immer nach etwas POC tun. Ich benutze Java com.github.pengrad.

Unter dem Code:

GetUpdatesResponse updatesResponse = bot.execute(new GetUpdates()); 
List updates = updatesResponse.updates(); 
for(Update update:updates){ 
InlineQuery inlineQuery = update.inlineQuery(); 
System.out.println(update); 
System.out.println(inlineQuery); 
System.out.println("----------------"); 
if(inlineQuery!=null) { 
InlineQueryResult r1 = new InlineQueryResultPhoto("AgADBQADrqcxG5q8tQ0EKSz5JaZjzDWgvzIABL0Neit4ar9MsXYBAAEC", "https://api.telegram.org/file/bot230014106:AAGtWr8xUCqUy8HjSgSFrY3aCs4IZs00Omg/photo/file_1.jpg", "https://api.telegram.org/file/bot230014106:AAGtWr8xUCqUy8HjSgSFrY3aCs4IZs00Omg/photo/file_1.jpg"); 
BaseResponse baseResponse = bot.execute(new AnswerInlineQuery(inlineQuery.id(), r1) 
.cacheTime(6000) 
.isPersonal(true) 
.nextOffset("offset") 
.switchPmParameter("pmParam") 
.switchPmText("pmText")); 
System.out.println(baseResponse.isOk()); 
System.out.println(baseResponse.toString()); 
System.out.println(baseResponse.description()); 

} 

    } 

Unterhalb der Konsolenausgabe:

Update{update_id=465103212, message=null, edited_message=null, inline_query=InlineQuery{id='995145139265927135', from=User{id=231700283, first_name='Test', last_name='test', username='null'}, location=null, query='hi', offset=''}, chosen_inline_result=null, callback_query=null} 

InlineQuery{id='995145139265927135', from=User{id=231700283, first_name='test', last_name='test', username='null'}, location=null, query='hi', offset=''} 

true 
BaseResponse{ok=true, error_code=0, description='null'} 
null## Heading ## 

Und ich bin immer die richtige Antwort in meinem Handy Telegramm App auch.

Verwandte Themen