10
10
#include " main.h"
11
11
12
12
#define TICK_INTERVAL 15
13
+ #define GREETING \
14
+ " {\" type\" : \" response.create\" , \" response\" : {\" modalities\" : " \
15
+ " [\" audio\" , \" text\" ], \" instructions\" : \" Say 'How can I help?.'\" }}"
13
16
14
17
PeerConnection *peer_connection = NULL ;
15
18
@@ -25,6 +28,25 @@ void oai_send_audio_task(void *user_data) {
25
28
}
26
29
#endif
27
30
31
+ static void oai_ondatachannel_onmessage_task (char *msg, size_t len,
32
+ void *userdata, uint16_t sid) {
33
+ #ifdef LOG_DATACHANNEL_MESSAGES
34
+ ESP_LOGI (LOG_TAG, " DataChannel Message: %s" , msg);
35
+ #endif
36
+ }
37
+
38
+ static void oai_ondatachannel_onopen_task (void *userdata) {
39
+ if (peer_connection_create_datachannel (peer_connection, DATA_CHANNEL_RELIABLE,
40
+ 0 , 0 , (char *)" oai-events" ,
41
+ (char *)" " ) != -1 ) {
42
+ ESP_LOGI (LOG_TAG, " DataChannel created" );
43
+ peer_connection_datachannel_send (peer_connection, (char *)GREETING,
44
+ strlen (GREETING));
45
+ } else {
46
+ ESP_LOGE (LOG_TAG, " Failed to create DataChannel" );
47
+ }
48
+ }
49
+
28
50
static void oai_onconnectionstatechange_task (PeerConnectionState state,
29
51
void *user_data) {
30
52
ESP_LOGI (LOG_TAG, " PeerConnectionState: %s" ,
@@ -56,7 +78,7 @@ void oai_webrtc() {
56
78
.ice_servers = {},
57
79
.audio_codec = CODEC_OPUS,
58
80
.video_codec = CODEC_NONE,
59
- .datachannel = DATA_CHANNEL_NONE ,
81
+ .datachannel = DATA_CHANNEL_STRING ,
60
82
.onaudiotrack = [](uint8_t *data, size_t size, void *userdata) -> void {
61
83
#ifndef LINUX_BUILD
62
84
oai_audio_decode (data, size);
@@ -78,6 +100,10 @@ void oai_webrtc() {
78
100
peer_connection_oniceconnectionstatechange (peer_connection,
79
101
oai_onconnectionstatechange_task);
80
102
peer_connection_onicecandidate (peer_connection, oai_on_icecandidate_task);
103
+ peer_connection_ondatachannel (peer_connection,
104
+ oai_ondatachannel_onmessage_task,
105
+ oai_ondatachannel_onopen_task, NULL );
106
+
81
107
peer_connection_create_offer (peer_connection);
82
108
83
109
while (1 ) {
0 commit comments