Mam zainstalowany TwiMl na eroku w Pythonie. Po wywołaniu użytkownika A od użytkownika B, użytkownik A również nie otrzymał połączenia i VOIP, podczas gdy użytkownik B otrzymał komunikat "wiadomość dziękczynna".twilio Połączenia aplikacji z aplikacjami nie działa
Kiedy próbuję wykonać placeCall
dla użytkownika B z PostMan
, użytkownik B otrzymuje wywołanie, a także dostaje wiadomość typu bot "dziękuję za wywołanie".
listonosz URL: https://myapp.herokuapp.com/placeCall
Moje wymogiem jest, gdy zgłoszę użytkownik A od użytkownika aplikacja B będzie się nazywać i oba mogą stanie się komunikować.
Wymagania
Flask==0.10.1
Jinja2==2.7.3
MarkupSafe==0.23
Werkzeug==0.9.6
httplib2==0.9
itsdangerous==0.24
six==1.*
twilio
wsgiref==0.1.2
Oto mój Python Code TwiMl.
import os
from flask import Flask, request
from twilio.jwt.access_token import AccessToken
from twilio.jwt.access_token.grants import VoiceGrant
from twilio.rest import Client
import twilio.twiml
ACCOUNT_SID = 'ACxxxxxxxx'
API_KEY = 'SKxxxxxxxx'
API_KEY_SECRET = 'TSxxxxxxxx'
PUSH_CREDENTIAL_SID = 'CRxxxxxxxx'
APP_SID = 'APxxxxxxxx'
app = Flask(__name__)
@app.route('/test', methods=['GET', 'POST'])
def test():
req_json = request.get_json(force=True)
UserName = req_json['username']
Password = req_json['password']
return str(UserName)
@app.route('/accessToken')
def token():
IDENTITY = request.args.get('identity')
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('/outgoing', methods=['GET', 'POST'])
def outgoing():
req_json = request.get_json(force=True)
CALLER_ID = req_json['callerid']
resp = twilio.twiml.VoiceResponse()
dial = Dial()
dial.client(CALLER_ID)
resp.append(dial)
#resp.say("Congratulations! You have made your first oubound call! Good bye.")
#resp.say("Thanks for Calling.",voice='woman',)
return str(resp)
@app.route('/incoming', methods=['GET', 'POST'])
def incoming():
resp = twilio.twiml.VoiceResponse()
#resp.say("Congratulations! You have received your first inbound call! Good bye.")
#resp.say("Thanks for Calling.",voice='woman',)
return str(resp)
@app.route('/placeCall', methods=['GET', 'POST'])
def placeCall():
req_json = request.get_json(force=True)
IDENTITY = req_json['identity']
CALLER_ID = req_json['callerid']
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)
client = Client(api_key, api_key_secret, account_sid)
call = client.calls.create(url=request.url_root + 'incoming', to='client:' + CALLER_ID, from_='client:' + IDENTITY)
return str(call.sid)
@app.route('/', methods=['GET', 'POST'])
def welcome():
resp = twilio.twiml.VoiceResponse()
resp.say("Welcome")
return str(resp)
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port, debug=True)
Dzienniki błędów
TwiML ustawienie na Twilio desce rozdzielczej
Zapytanie URL: https://myapp.herokuapp.com/outgoing
Proszę dać mi znać, czy jest coś, że brakowało mi do konfiguracji lub coś, co zrobiłem źle.
Tutorial że następnie skonfigurować TwiML jest Here
Dzięki za odpowiedź, czy mógłbyś sprawdzić moje zaktualizowane dzienniki pytań i błędów, które naprawdę pomogłyby mi rozwiązać mój problem – PinkeshGjr
To jest nowy błąd, więc zazwyczaj najlepiej jest otworzyć nowe pytanie. W tym przypadku problem polega na tym, że importujesz 'VoiceGrant' z niewłaściwego miejsca. Musisz "od twilio.jwt.access_token.grants importować VoiceGrant". Sprawdź [dokument tokena dostępu] (https://www.twilio.com/docs/api/rest/access-tokens?code-sample=code-creating-an-access-token-voice&code-language=py&code-sdk- version = 6.x) po więcej szczegółów. – philnash
Wystąpił kolejny błąd, sprawdź zaktualizowane pytanie z dziennikami błędów dzięki – PinkeshGjr