Javascript Twilio-client: Ошибка: вызовите Device.setup() перед подключением

Я пытаюсь использовать Programmable Voice API, чтобы позвонить со своей страницы (React), следуя официальному руководству. И есть странная ошибка.

Итак, при монтировании компонента я проверяю наличие токена, а затем использую его для настройки устройства подключения.

import { Device } from 'twilio-client';

.....

в компоненте:

    let device = new Device();

    const [callState, setCallState] = useState({
        muted: false,
        log: 'Connecting...',
        onPhone: false,
        currentNumber: '',
        isValidNumber: false,
        active: false
    })


....


    useEffect(() => {
        console.log('Doing some stuff on Component mount')
        if (token) {
            device.setup(token, { closeProtection: true });
            setCallState(prevState => ({
                ...prevState,
                active: true
            }));
        } else {
            //GET TOKEN
        }

        // Configure event handlers for Twilio Device

        //TODO: Outdated bit, for change 
        device.disconnect(() => {
            setCallState(prevState => ({
                onPhone: false,
                log: 'Call ended.'
            }));
        });

        device.ready(() => {
            setCallState(prevState => ({
                log: 'Connected'
            }));
        });


    }, [token])

Затем в обработчике вызовов я звоню device.connect нравится:

    const handleToggleCall = () => {
        if (callState.onPhone) {
            device.disconnectAll();
            setCallState(prevState => ({
                ...prevState,
                onPhone: false
            }));

        } else {
            device.connect({ number: "SOME NUMBER" });
            setCallState(prevState => ({
                ...prevState,
                muted: false,
                onPhone: true
            }));
        }
    }

Когда я звоню handleToggleCall У меня такая ошибка:

Error: Call Device.setup() before connect

указывает на Device.__throwUnlessSetup.

private _throwUnlessSetup(methodName: string) {
      if (!this.isInitialized) { throw new InvalidStateError(`Call Device.setup() before ${methodName}`); }
}

Как я понял, он не инициализировался успешно, даже подумал, что согласно вкладке сети он запросил все файлы dhtm, как побочное свидетельство инициализации.

0 ответов

Другие вопросы по тегам