私はに従っており、ヘロクのPythonデプロイメントを使用しており、電話をかけることができます。それは私が問題を抱えているという受け取りです。私はTVOIncomingCall
インスタンスまたはPKPushRegistry
のinitまたはdelegateロジックのいずれも変更していません。そして実際にコンパイルすると、ログに"pushRegistry:didUpdatePushCredentials:forType"
と"Successfully registered for VoIP push notifications."
と表示されます。これは私のserver.pyでの受信ハンドラが問題だと思います。TwilioプログラマブルボイスSDKを使用して電話を受ける
私の質問は次のとおりです:着信コールをユーザーに通知するためにVoIPプッシュ通知を発射する適切な方法は何ですか?私のアプリでVoIPサービスを有効にし、VoIPサービス証明書(.p12)を生成し、有効なPUSH_CREDENTIAL_SID
を受け取ったが、どうすればよいのだろうか?
クイックスタートがサーバーの「placeCall」エンドポイントに到達すると言うので、Twilio番号の着信パスを更新し、それをダッシュボードでポイントしますが、Twilio番号を呼び出すたびに「アプリケーションエラーが発生しました。
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 = 'ACxxxxxxxx'
API_KEY = 'SKxxxxxxxxxxxxxxxx'
API_KEY_SECRET = 'xxxxxxxxxxxxxxxx'
PUSH_CREDENTIAL_SID = 'CRxxxxxxxxxxxxxxxx'
APP_SID = 'APxxxxxxxxxxxxxxxx'
ACCOUNT_AUTH = 'xxxxxxxxxxxxxxxx'
IDENTITY = 'MyApp' #not literally
app = Flask(__name__)
@app.route('/accessToken')
def token():
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)
push_credential_sid = os.environ.get("PUSH_CREDENTIAL_SID", PUSH_CREDENTIAL_SID)
app_sid = os.environ.get("APP_SID", APP_SID)
grant = VoiceGrant(
push_credential_sid = push_credential_sid,
outgoing_application_sid = app_sid
)
token = AccessToken(account_sid, api_key, api_key_secret, IDENTITY)
token.add_grant(grant)
return str(token)
@app.route('/placeCall', methods=['GET', 'POST'])
def placeCall():
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)
push_credential_sid = os.environ.get("PUSH_CREDENTIAL_SID", PUSH_CREDENTIAL_SID)
app_sid = os.environ.get("APP_SID", APP_SID)
CALLER_ID = request.values.get('From')
IDENTITY = request.values.get('To')
#client = Client(api_key, api_key_secret, account_sid)
client = Client(api_key, api_key_secret, account_sid, app_sid, push_credential_sid)
call = client.calls.create(to='client:' + IDENTITY, from_= 'client:' + CALLER_ID)
return str(call.sid)
マイIdentity
値は明らかに間違っている:
は、ここに私のserver.pyから関連するコードです。私はそれがアプリインスタンスへの参照と何とか等しい必要があると思います。クイックスタートのPythonの例では、IDENTITY = 'voice_test'
また、PUSH_CREDENTIAL_SID
はどこに出るのですか?
ありがとうございます。
UPDATE
______ @ philnashさんのコメントを1として
は、私がdial
動詞内部client
名詞を入れ子になってきました。これは、現在デバッガ考えられる原因として、「未知または予期しないネストされた要素」を明記の「スキーマ検証警告」になり
@app.route('/incoming', methods=['GET', 'POST'])
def incoming():
CALLER_ID = request.values.get('From')
resp = twilio.twiml.Response()
resp.dial(client = IDENTITY, callerId = CALLER_ID, record = "record-from-answer-dual")
return str(resp)
:ここに私の新しい/incoming
エンドポイントです。クライアントを間違って登録していますか?古いSDKでは、クライアント名をパラメータとして明示的に渡すことができました。私server.pyで
IDENTITY
文字列は次のとおりです。任意のメソッドのスコープの外で定義され
- 。
- アクセストークンの生成で使用されます。
client
のネスト、dial
動詞のネーム。
返信ありがとうPhil!私は元の質問を更新しました。更新セクションのコメントをご覧ください。 :) –
更新ありがとう。私はあなたが正しく入れ子をしているとは思わない、私の更新された答えを確認してください。 – philnash
OK!今どこかに行くよ!あなたの提案でサーバーを更新しました。現在、「エラー - 52134 - 無効なAPNデバイストークン」が表示されています。新しいVoIPサービス証明書を再生成してアップロードし、プッシュ資格情報SIDを更新します。 Philに感謝します。 –