/
05-custom-recorder-echo.html
81 lines (71 loc) · 2.25 KB
/
05-custom-recorder-echo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<html>
<head>
<script src="https://zello.io/sdks/js/latest/zcc.sdk.js"></script>
<script>
var incomingDataBuffers = [];
var outgoingMessage = null;
var incomingMessage = null;
var incomingMessageFrameRate = null;
var CustomRecorder = function() {
this.cp = 0;
var self = this;
setTimeout(function() {
self.onready();
setTimeout(function() {
self.sendBuffer();
}, 100);
}, 200);
};
CustomRecorder.prototype.sendBuffer = function() {
var self = this;
var buffer = incomingDataBuffers.shift();
if (buffer) {
self.ondata([buffer]);
setTimeout(function() {
self.sendBuffer();
}, 100);
} else {
outgoingMessage.stop();
}
};
function connect() {
ZCC.Sdk.init({
player: true,
recorder: false,
widget: false
}).then(function() {
var session = new ZCC.Session({
serverUrl: 'wss://zellowork.io/ws/',
channel: '',
authToken: '',
username: '',
password: ''
});
session.connect();
session.on(ZCC.Constants.EVENT_INCOMING_VOICE_WILL_START, function(message) {
incomingMessage = message;
incomingMessageFrameRate = incomingMessage.codecDetails.rate;
incomingDataBuffers = [];
incomingMessage.on(ZCC.Constants.EVENT_INCOMING_VOICE_DATA_DECODED, function(pcmData) {
incomingDataBuffers.push(pcmData);
});
incomingMessage.on(ZCC.Constants.EVENT_INCOMING_VOICE_DID_STOP, function() {
setTimeout(function() {
outgoingMessage = session.startVoiceMessage({
recorder: CustomRecorder,
recorderSampleRate: incomingMessage.options.sampleRate
});
outgoingMessage.on(ZCC.Constants.EVENT_DATA, function(data) {
console.warn('data to be encoded:', data);
});
}, 1000);
});
});
})
}
</script>
</head>
<body onload="connect()">
Echo incoming messages back to channel
</body>
</html>