Я пытаюсь использовать Programmable Voice API для звонка со своей страницы (Реагировать) Следуя официальному руководству. И есть странная ошибка.
Итак, при монтировании компонента я проверяю наличие токена и затем использую его для настройки устройства подключения
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 в качестве дополнительного доказательства инициализации.