mirror of
https://github.com/jambonz/next-static-site.git
synced 2025-12-19 04:47:44 +00:00
docs for coach mode in conferencing (#89)
* docs for coach mode in conferencing * wip
This commit is contained in:
83
markdown/docs/supporting-articles/conferencing-coach-mode.md
Normal file
83
markdown/docs/supporting-articles/conferencing-coach-mode.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# Conferencing "coach" mode
|
||||
|
||||
The conferencing feature supports a coaching feature whereby designated participants can hear the full conference audio but their own audio is only heard by a subset of the conference participants.
|
||||
|
||||
The classic example of this is a manager listening in on a call between an agent and a customer and being able to "whisper" to the agent without the customer hearing. This feature is not limited to a single participant receiving the audio, it could be any subset of the conference participants.
|
||||
|
||||
>> Coach mode is only supported on version 0.9.0 and above
|
||||
|
||||
## Enabling coach mode
|
||||
|
||||
To enable coach mode, you must assign a member tag to the participants that you may want to selectively send the audio to. In the example above, it is the agent that you want to be able to send the manager's audio to, so when the agent joins the conference you would assign them a memberTag:
|
||||
|
||||
```js
|
||||
app.conference({
|
||||
name: 'support-conference-23',
|
||||
startConferenceOnEnter: true,
|
||||
endConferenceOnExit: true,
|
||||
memberTag: 'agent'
|
||||
})
|
||||
```
|
||||
|
||||
Later, when the manager joins, they should use the `speakTo` tag to indicate their audio input should only be heard by agents:
|
||||
|
||||
```js
|
||||
app.conference({
|
||||
name: 'support-conference-23',
|
||||
speakOnlyTo: 'agent'
|
||||
})
|
||||
```
|
||||
|
||||
During the conference, you can dynamically change these settings, and the conference audio flows will be immediately updated accordingly. This can be done using the REST API as show below:
|
||||
|
||||
```bash
|
||||
# change a participant's member tag value
|
||||
curl --location -g --request PUT '{{base_url}}/v1/Accounts/{{account_sid}}/Calls/{{call_sid}}' \
|
||||
--data '{
|
||||
"conferenceParticipantAction": {
|
||||
"action": "tag",
|
||||
"tag": "customer"
|
||||
}
|
||||
}'
|
||||
|
||||
# remove a participant's member tag
|
||||
curl --location -g --request PUT '{{base_url}}/v1/Accounts/{{account_sid}}/Calls/{{call_sid}}' \
|
||||
--data '{
|
||||
"conferenceParticipantAction": {
|
||||
"action": "untag"
|
||||
}
|
||||
}'
|
||||
|
||||
# make manager's audio heard by everyone
|
||||
curl --location -g --request PUT '{{base_url}}/v1/Accounts/{{account_sid}}/Calls/{{call_sid}}' \
|
||||
--data '{
|
||||
"conferenceParticipantAction": {
|
||||
"action": "uncoach"
|
||||
}
|
||||
}'
|
||||
|
||||
# put a participant into coach mode
|
||||
curl --location -g --request PUT '{{base_url}}/v1/Accounts/{{account_sid}}/Calls/{{call_sid}}' \
|
||||
--data '{
|
||||
"conferenceParticipantAction": {
|
||||
"action": "coach",
|
||||
"tag": "agent"
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
The same can be accomplished via the websocket api:
|
||||
|
||||
```js
|
||||
// change a participant's member tag
|
||||
session.injectCommand('conf:participant-action', {action: 'tag', tag: 'customer'});
|
||||
|
||||
// remove a particpant's member tag
|
||||
session.injectCommand('conf:participant-action', {action: 'untag'});
|
||||
|
||||
// make manager's audio heard by everyone
|
||||
session.injectCommand('conf:participant-action', {action: 'uncoach'});
|
||||
|
||||
// put a participant into coach mode
|
||||
session.injectCommand('conf:participant-action', {action: 'coach', tag: 'agent'});
|
||||
```
|
||||
@@ -21,7 +21,9 @@ You can use the following attributes in the `conference` command:
|
||||
| enterHook | A webhook to retrieve something to play or say to the caller just before they are put into a conference after waiting for it to start| no |
|
||||
| joinMuted | if true, this caller will join th conference with their audio muted | no |
|
||||
| maxParticipants | maximum number of participants that will be allowed in the conference | no |
|
||||
| memberTag | a way to classify participants for the "coach" feature; see related speakOnlyTo attribute below (0.9.0 and above)| no |
|
||||
| name | name of the conference | yes |
|
||||
| speakOnlyTo | a tag value that will cause this members audio to be heard only by members that were assigned that tag; see [this article](/docs/supporting-articles/conferencing-coach-mode) for details | no |
|
||||
| startConferenceOnEnter | if true, start the conference only when this caller enters. This also designates this caller as a moderator of the conference (default: true) | no |
|
||||
| statusHook | A webhook to call with conference status events | no |
|
||||
| statusEvents | An array of events for which the statusHook should be called to. See below for details. | no |
|
||||
|
||||
Reference in New Issue
Block a user