電報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
のいずれかです。すべての場合、私はそれを送信するときに同じエラーが発生します。
私は何が間違っているのか分かりません。
ああだと、私自身のVPS上でそれを試してみました奇妙なことに、実際にはファイルを送信していますが、私はまだそれを音声ではなく、ファイルとして見ています。エンコーディングが正しくないように見えます – mbrt