Как вы отправляете закрытые подписи к встрече Zoom.us? - PullRequest
0 голосов
/ 13 июля 2020

Я пытался следовать инструкциям на веб-сайте Zoom , но каждый раз, когда я пытаюсь отправить подписи, я получаю сообщение об ошибке 400.

{"timestamp":1594640701018,"status":400,"error":"Bad Request","message":"No message available","path":"/closedcaption"}

В документации сказано, что 400 возвращается, когда собрание еще не началось, но в моем тестовом сценарии у меня есть два устройства, подключенных к собранию, и я копирую токен API скрытых субтитров с хоста, прежде чем давать это в мою тестовую программу. Насколько я могу судить, это начатая встреча, так что должно быть что-то еще. Я пробовал отправлять запросы несколько раз, но все равно получаю 400 ошибок.

Я использую Python 3, и я пробовал и urllib.request, и http.client, но безрезультатно. Что мне не хватает?

    import urllib.request
    import http.client
    third_party_api_token = input('Third Party CC Token: ')
    domain = third_party_api_token.split('/')[2]
    if 'https://' in third_party_api_token:
        domain = domain + ':443'
    else:
        domain = domain + ':80'
    seq = 1
    while True:
        input('Press Enter to continue')
        
        formatted_url = '{}&lang=en-US&seq={}'.format(zoom_cc_url, seq)
        # formatted_text = 'Hello World\n'.encode('utf-8')
        formatted_text = 'Hello World\n'    
        headers = {'Content-Type':'text/plain'}
        print(domain)
        print(formatted_url)
        try:
            # r = urllib.request.Request(formatted_url, data=formatted_text, headers=headers, method='POST')
            # with urllib.request.urlopen(r) as response:
            #     print(response.read().decode('utf-8'))
            
            conn = http.client.HTTPSConnection(domain)
            conn.request("POST", formatted_url.replace(domain, ''), body=formatted_text, headers=headers)
            res = conn.getresponse()
            data = res.read()
            print(data.decode("utf-8"))
        except Exception as e:
            print(e)
        seq += 1

1 Ответ

0 голосов
/ 13 июля 2020

Оставил в коде старое имя переменной, работает нормально, когда я его удаляю. Для справки работает следующий код:

import urllib.request
import http.client
third_party_api_token = input('Third Party CC Token: ')
domain = third_party_api_token.split('/')[2]
if 'https://' in third_party_api_token:
    domain = domain + ':443'
else:
    domain = domain + ':80'
seq = 1
while True:
    input('Press Enter to continue')
    
    formatted_url = '{}&lang=en-US&seq={}'.format(third_party_api_token , seq)
    # formatted_text = 'Hello World\n'.encode('utf-8')
    formatted_text = 'Hello World\n'    
    headers = {'Content-Type':'text/plain'}
    print(domain)
    print(formatted_url)
    try:
        # r = urllib.request.Request(formatted_url, data=formatted_text, headers=headers, method='POST')
        # with urllib.request.urlopen(r) as response:
        #     print(response.read().decode('utf-8'))
        
        conn = http.client.HTTPSConnection(domain)
        conn.request("POST", formatted_url.replace(domain, ''), body=formatted_text, headers=headers)
        res = conn.getresponse()
        data = res.read()
        print(data.decode("utf-8"))
    except Exception as e:
        print(e)
    seq += 1
...