我试图从电报BOT发送语音消息,但没有成功。
作为概念验证,我尝试使用curl
:
#!/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"}
我确定令牌和聊天ID都是正确的,因为我能够使用sendAudio
方法发送音频(发送mp3文件)。我使用的网址是公开的,来自任何PC的wget
都会下载该文件。
HTTP标头也是正确的AFAIK(请注意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 :(得分:0)
我在自己的VPS上尝试过,似乎Telegram只接受端口80用于HTTP,端口443用于HTTPS:(
您可以下载它,并使用curl -F "voice=@foo.ogg"
自行上传。