我正在將支持Twilio的應用程序從舊SDK升級到新的Twilio Programmable Voice(beta 5),但遇到了幾個問題。其中最主要的是傳出呼叫的音頻質量差,只能描述爲丟失的數據包聽起來像什麼。即使當我運行Quickstart demo app時,問題依然存在,導致我的結論是問題在於我的Twiml。我已經按照「T」的說明來設置適當的功能,權利,配置文件和上傳voip推送憑證,但是在新的SDK或Python版本的服務器上很少有文檔,我離開了抓我的頭。使用Twilio可編程語音SDK的通話質量很差
的唯一修改演示應用程序,我已經取得了對包括「到」和「從」我的呼叫請求參數,就像這樣:
NSDictionary *params = @{@"To" : self.phoneTextField.text, @"From": @"+16462332222",};
[[VoiceClient sharedInstance] configureAudioSession];
self.outgoingCall = [[VoiceClient sharedInstance] call:[self fetchAccessToken] params:params delegate:self];
調用寫給我的Twiml服務器(在適當的終點在Heroku上一個python部署)爲在這裏看到:
import os
from flask import Flask, request
from twilio.jwt.access_token import AccessToken, VoiceGrant
from twilio.rest import Client
import twilio.twiml
ACCOUNT_SID = 'ACblahblahblahblahblahblah'
API_KEY = 'SKblahblahblahblahblahblah'
API_KEY_SECRET = 'blahblahblahblahblahblah'
PUSH_CREDENTIAL_SID = 'CRblahblahblahblahblahblah'
APP_SID = 'APblahblahblahblahblahblah'
IDENTITY = 'My_App'
CALLER_ID = '+15551111' # my actual number
app = Flask(__name__)
@app.route('/makeTheDamnCall', methods=['GET', 'POST'])
def makeTheDamnCall():
account_sid = os.environ.get("ACCOUNT_SID", ACCOUNT_SID)
api_key = os.environ.get("API_KEY", API_KEY)
api_key_secret = os.environ.get("API_KEY_SECRET", API_KEY_SECRET)
CALLER_ID = request.values.get('From')
IDENTITY = request.values.get('To')
client = Client(api_key, api_key_secret, account_sid)
call = client.calls.create(url=request.url_root, to='client:' + IDENTITY, from_='client:' + CALLER_ID)
return str(call.sid)
控制檯輸出outgoingCall:didFailWithError: Twilio Services Error
和通話記錄顯示一個完整的客戶端調用。調試器的檢查顯示TwilioRestException: HTTP 400 error: Unable to create record
。正如你所看到的,我在請求中包含的URL可能會有問題,因爲它只是進入了根目錄,但是沒有辦法將url留空(我發現了)。我最終會將此更改爲url=request.url_root + 'handleRecording'
用於通話記錄,但現在我要一步一個腳印。
我的解決方案至今一直溝call = client.calls.create
贊成dial
動詞,像這樣:
resp = twilio.twiml.Response()
resp.dial(number = IDENTITY, callerId = CALLER_ID)
return str(resp)
這使得通話,但質量是如此之差,以使其無用。 (10秒鐘以上的沉默,然後間歇地聽到另一方的聲音)。以這種方式使用撥號動詞也是不可接受的,因爲它的低效率,因爲我現在每次收到兩個電話的費用。
另一個我不確定是否連接的主要問題是,我還沒有收到任何來電,但我懷疑我可能需要單獨提出這個問題。
我怎樣才能使這條線路工作?我在看你,@philnash。幫助我再次使我的應用程序更好。 :)
call = client.calls.create(url=request.url_root, to='client:' + IDENTITY, from_='client:' + CALLER_ID)
謝謝菲爾!我已經與Twilio開了一張票,包括一個Call和Recording SID。 –