Программируемый чат Twilio каждый раз заново создает токен, а разговор не возобновляется после обновления страницы - PullRequest
0 голосов
/ 26 ноября 2018

Вот мой код, который возвращает токен пользователя чата, который должен использоваться для участия в разговоре с использованием программируемого чата twilio.Взял источник от здесь .

def token(request):
    identity = request.GET.get('identity', request.user.email)
    device_id = request.GET.get('device', 'default')  # unique device ID

    account_sid = settings.TWILIO_ACCOUNT_SID
    api_key = settings.TWILIO_API_KEY
    api_secret = settings.TWILIO_API_SECRET
    chat_service_sid = settings.TWILIO_CHAT_SERVICE_SID

    token = AccessToken(account_sid, api_key, api_secret, identity=identity)

    # Create a unique endpoint ID for the device
    endpoint = "MiniSlackChat:{0}:{1}".format(identity, device_id)

    if chat_service_sid:
        chat_grant = ChatGrant(endpoint_id=endpoint,
                               service_sid=chat_service_sid)
        token.add_grant(chat_grant)

    response = {
        'identity': identity,
        'token': token.to_jwt().decode('utf-8')
    }
    return JsonResponse(response)

Но после одного успешного разговора между двумя пользователями я получаю Error: Channel member limit exceeded (я настроил двух пользователей на ограничение канала, потому что мне не нужнофункция конференц-чата).Я думаю, что это происходит из-за того, что токен создается заново при каждой загрузке страницы.Как мне написать свой код, чтобы позволить пользователю участвовать в чате со своим старым токеном?Я пытался сохранить сгенерированный токен следующим образом:

def token(request):
    identity = request.GET.get('identity', request.user.email)
    device_id = request.GET.get('device', 'default')  # unique device ID

    account_sid = settings.TWILIO_ACCOUNT_SID
    api_key = settings.TWILIO_API_KEY
    api_secret = settings.TWILIO_API_SECRET
    chat_service_sid = settings.TWILIO_CHAT_SERVICE_SID
    token = request.user.twilio_token
    endpoint = "Qiwi-chat:{0}:{1}".format(identity, device_id)
    if token:
        token = token.encode('utf-8')
    else:
        token = AccessToken(account_sid, api_key, api_secret, identity=identity)
        request.user.twilio_token = token.to_jwt().decode('utf-8')
        request.user.save()

        if chat_service_sid:
            chat_grant = ChatGrant(endpoint_id=endpoint,
                                   service_sid=chat_service_sid)
            token.add_grant(chat_grant)
        token = request.user.twilio_token
    # Create a unique endpoint ID for the device

    response = {
        'identity': identity,
        'token': token.decode('utf-8')
    }

    return JsonResponse(response)

Но получил эту ошибку:

Failed to create session Error: Invalid Access Token grants
...