## Description Agents can now place a WhatsApp call to a contact straight from the contacts screen, even if that contact has never messaged in. Previously the call only worked once a conversation already existed, so a freshly added contact would fail with "Unable to start the call. Please try again." — the only workaround was to get the contact to message the channel first. ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? - Manually via UI ## Checklist: - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
/* global axios */
|
|
import ApiClient from '../../ApiClient';
|
|
|
|
class WhatsappCallsAPI extends ApiClient {
|
|
constructor() {
|
|
super('whatsapp_calls', { accountScoped: true });
|
|
}
|
|
|
|
show(callId) {
|
|
return axios.get(`${this.url}/${callId}`).then(r => r.data);
|
|
}
|
|
|
|
// Either conversationId, or contactId + inboxId to let the BE resolve the conversation.
|
|
initiate({ conversationId, contactId, inboxId }, sdpOffer) {
|
|
return axios
|
|
.post(`${this.url}/initiate`, {
|
|
conversation_id: conversationId,
|
|
contact_id: contactId,
|
|
inbox_id: inboxId,
|
|
sdp_offer: sdpOffer,
|
|
})
|
|
.then(r => r.data);
|
|
}
|
|
|
|
accept(callId, sdpAnswer) {
|
|
return axios
|
|
.post(`${this.url}/${callId}/accept`, { sdp_answer: sdpAnswer })
|
|
.then(r => r.data);
|
|
}
|
|
|
|
reject(callId) {
|
|
return axios.post(`${this.url}/${callId}/reject`).then(r => r.data);
|
|
}
|
|
|
|
terminate(callId) {
|
|
return axios.post(`${this.url}/${callId}/terminate`).then(r => r.data);
|
|
}
|
|
|
|
uploadRecording(callId, blob, filename = 'call-recording.webm') {
|
|
const formData = new FormData();
|
|
formData.append('recording', blob, filename);
|
|
return axios
|
|
.post(`${this.url}/${callId}/upload_recording`, formData)
|
|
.then(r => r.data);
|
|
}
|
|
}
|
|
|
|
export default new WhatsappCallsAPI();
|