2017-06-09 22 views
0

電報BOTからのボイスメッセージを成功させようとしています。私はcurlを使用していることをやろうとしている概念の証明としてテレグラムsendVoice()は常に「間違ったファイル識別子」を返す

#!/bin/bash 
TOKEN=$(cat .token) 
CHAT=$(cat .chat) 
URL="http://server2.mbrt.it:8080/static/foo.ogg" 
curl "https://api.telegram.org/bot$TOKEN/sendVoice?chat_id=$CHAT&voice=$URL" 

しかし、私は入れません:

{"ok":false,"error_code":400,"description":"Bad Request: wrong file identifier/HTTP URL specified"} 

私はトークンとチャットの両方確信しています私はsendAudioメソッド(mp3ファイルを送る)でオーディオを送ることができるので、正しいです。私が使用しているURLは公開されており、どのPCからもwgetがファイルをダウンロードします。

HTTPヘッダも正しい私の知る限り(Content-Typeヘッダーに注意してください)、次のとおりです。

$ curl -v http://server2.mbrt.it:8080/static/foo.ogg >/dev/null 
< HTTP/1.1 200 OK 
< Server: nginx/1.10.3 
< Date: Fri, 09 Jun 2017 14:14:11 GMT 
< Content-Type: audio/ogg 
< Content-Length: 5881 
< Last-Modified: Thu, 08 Jun 2017 23:23:21 GMT 
< Connection: keep-alive 
< ETag: "5939dc69-16f9" 
< Accept-Ranges: bytes 

私の推測では、私のエンコーディングが何らかの方法で間違っていたということでした。

$ file foo.ogg 
foo.ogg: Ogg data, Opus audio, 

しかし、私はそれをエンコードしてみましたffmpeg,opusencおよびoggencのいずれかです。すべての場合、私はそれを送信するときに同じエラーが発生します。

私は何が間違っているのか分かりません。

答えて

0

私は電報はHTTPSのみのためにHTTP用のポート80、およびポート443を受け入れているようだ:(

あなたはそれをダウンロードし、それを自分でアップロードするcurl -F "[email protected]"を使用することができます。

+0

ああだと、私自身のVPS上でそれを試してみました奇妙なことに、実際にはファイルを送信していますが、私はまだそれを音声ではなく、ファイルとして見ています。エンコーディングが正しくないように見えます – mbrt

関連する問題