2015-10-27 1 views
1

Je suis tout à fait un novice dans Telegram et j'essaye de faire mes premiers pas avec elle.Comment utiliser setWebhook dans Telegram avec des certificats autonomes sous Windows 7 et PHP?

J'ai trouvé un bon tutoriel ici https://www.youtube.com/watch?v=hJBYojK7DO4: J'ai configuré mon Apache 2.4 avec PHP et SSL et tout fonctionne très bien, aussi les exemples dans le tutoriel.

Troubles utilisent la méthode setWebhook .... quand j'essaie de mettre dans mon navigateur

https://api.telegram.org/<my_bot_code>/setWebHook?url=https://localhost/Telegram/MyYouTubeTutorialBot/YouTubeTutorialBot.php 

la réponse est

{"ok":false,"error_code":400,"description":"Error: Bad webhook: Error: Ip is reserved"} 

Notez que j'utilise un certificat auto généré. ...

Je l'ai trouvé dans la documentation du télégramme api (réf. https://core.telegram.org/bots/faq#i-39m-having-problems-with-webhooks), qui

"..... Pour utiliser un certificat auto-signé, vous devez télécharger votre certificat de clé publique en utilisant le paramètre certificate dans setWebhook. S'il vous plaît télécharger en tant que fichier d'entrée, l'envoi d'une chaîne ne fonctionnera pas. "

Je ne comprends pas comment télécharger mon fichier certificat de clé publique .... des exemples quelque part?

Le problème pourrait être parce que j'utilise localhost et l'adresse IP par défaut 127.0.0.1 Pour mon Apache local Dois-je changer mon adresse IP en utilisant celle qui change chaque fois que je me connecte au web (j'utilise une clé internet pour me connecter au web .....)

Je vous remercie u beaucoup à l'avance

+0

Vous ne pouvez pas utiliser localhost parce que 127.0.0.1 est accessible uniquement à partir de votre ordinateur intérieur. Les serveurs de télégrammes ne peuvent pas l'atteindre. –

Répondre

2

La bibliothèque suivante vous permet de faire facilement (et rapidement mis en place un bot):

https://github.com/auino/php-telegram-bot-library

Il appelle essentiellement fonction/Page setWebhook du Télégramme, en passant l'auto-signé certificat sous forme de fichier, via une requête POST:

$data = array("url"=>$YOURCALLBACKURL,"certificate"=>"@$CERTIFICATEFILE"); 
$telegramurl = "https://api.telegram.org/bot$TOKEN/setWebhook"; 
// now you have to make a request on $telegramurl passing $data via POST (e.g. using curl library) 

Si vous souhaitez utiliser php-telegram-bot-library, vous pouvez facilement le configurer grâce à l'installation.fichier php, ou en utilisant le code suivant (il fonctionne sur Linux, il devrait fonctionner aussi sur les systèmes Windows):

$bot = new telegram_bot($TOKEN); 
$bot->set_webhook($WEBHOOKURL, $SSLCERTIFICATEFILE); 
2

votre machine locale n'est pas accessible sur Internet par localhost ou votre adresse IP locale (127.0.0.1) ou réseau local IP (192.168.1.2)
chaque machine a elle-même de localhost si les serveurs de télégramme localhost est différent avec votre de
vous devriez utiliser un web hosting ou VPS pour exécuter le script et utiliser son adresse
Je connais un développeur gratuit VPS: heroku

2

après utilisation simple, code html

<html> 
 
<body> 
 

 
<form action="https://api.telegram.org/bot<BOT_TOCKEN>/setwebhook" method="post" enctype="multipart/form-data"> 
 
    Select Certificate to upload: 
 
    <input type="file" name="certificate" id="fileToUpload"> 
 
\t URL: <input type="text" name="url" value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br> 
 
    <input type="submit" value="Upload Certificate" name="submit"> 
 
</form> 
 

 
</body> 
 
</html>

+0

pouvez-vous expliquer ce que cela fait et pourquoi cela fonctionne? – depperm

+1

c'est un formulaire simple post, donc vous pouvez télécharger le certificat au bot télégramme, il suffit de le remplacer avec vos informations de bot –

+0

brillant. Merci –