main
reng 4 months ago
parent e627a7e5d8
commit e364c0dbb6
  1. 27
      vite/public/cuelist_demo2.json
  2. 14
      vite/src/pages/flow_free.jsx
  3. 11
      vite/src/util/osc.js

@ -37,16 +37,18 @@
"audioFile": "assets/ai/ai-01.mp3", "audioFile": "assets/ai/ai-01.mp3",
"nextcue": 4.01, "nextcue": 4.01,
"callback":"numpad", "callback":"numpad",
"numpad_type":"userid" "numpad_type":"userid",
"hint":"輸入兩位數號碼\n輸入完成送出,請按井字\n取消輸入,請按米字"
}, },
{ {
"id": 4.01, "id": 4.01,
"name": "Q4.01", "name": "Q4.01",
"type": "phone", "type": "phone",
"description": "撥接音效", "description": "撥接音效",
"auto": false, "auto": true,
"audioFile": "assets/sfx/sfx-03.mp3", "audioFile": "assets/sfx/sfx-03.mp3",
"nextcue": 4.1 "nextcue": 4.1,
"hint":"輸入完成"
}, },
{ {
"id": 4.1, "id": 4.1,
@ -121,7 +123,8 @@
"description": "接通音效", "description": "接通音效",
"audioFile": "assets/sfx/sfx-07.mp3", "audioFile": "assets/sfx/sfx-07.mp3",
"auto": true, "auto": true,
"nextcue": 5.1 "nextcue": 5.1,
"hint":"電話已接通,請留言"
}, },
{ {
"id": 5.1, "id": 5.1,
@ -139,7 +142,8 @@
"description": "結束逼", "description": "結束逼",
"auto": true, "auto": true,
"audioFile": "assets/sfx/sfx-08.mp3", "audioFile": "assets/sfx/sfx-08.mp3",
"nextcue": 5.2 "nextcue": 5.2,
"hint":"通話結束"
}, },
{ {
"id": 5.2, "id": 5.2,
@ -167,12 +171,9 @@
"9": { "9": {
"nextcue": 5.5, "nextcue": 5.5,
"description": "刪除" "description": "刪除"
},
"default": {
"nextcue": 5.4,
"description": "保留"
} }
} },
"hint":"保留,請按1\n刪除,請按9\n確定,請按 #"
}, },
{ {
"id": 5.4, "id": 5.4,
@ -183,7 +184,8 @@
"nextcue": 6, "nextcue": 6,
"audioFile": "assets/ai/ai-07.mp3", "audioFile": "assets/ai/ai-07.mp3",
"callback":"numpad", "callback":"numpad",
"numpad_type":"password" "numpad_type":"password",
"hint":"請輸入三位數密碼\n確定輸入後,請按#"
}, },
{ {
"id": 5.5, "id": 5.5,
@ -192,7 +194,8 @@
"description": "刪除", "description": "刪除",
"auto": true, "auto": true,
"nextcue": 6, "nextcue": 6,
"audioFile": "assets/ai/ai-08.mp3" "audioFile": "assets/ai/ai-08.mp3",
"callback":"discard"
}, },
{ {
"id": 6, "id": 6,

@ -87,6 +87,7 @@ export function FreeFlow(){
setSummary(null); setSummary(null);
reset(); reset();
sendOsc(OSC_ADDRESS.CHOICE, 'reset');
} }
function playAudio(url){ function playAudio(url){
@ -255,6 +256,7 @@ export function FreeFlow(){
sendOsc(OSC_ADDRESS.STATUS, cue.status); // Send OSC status message sendOsc(OSC_ADDRESS.STATUS, cue.status); // Send OSC status message
if(cue.status=='reset') { if(cue.status=='reset') {
refLight.current.set(1); refLight.current.set(1);
resetData();
} }
} }
if(cue.type=='chat' || cue.type=='user_input') { if(cue.type=='chat' || cue.type=='user_input') {
@ -286,6 +288,16 @@ export function FreeFlow(){
uploadHistory(history); // Save chat history when cue ends uploadHistory(history); // Save chat history when cue ends
} }
if(cue.callback==OSC_ADDRESS.DISCARD) {
sendOsc(OSC_ADDRESS.CHOICE, OSC_ADDRESS.DISCARD); // Send OSC discard message
setPassword();
}
if(cue.hint!=null){
sendOsc(OSC_ADDRESS.HINT, cue.hint); // Send OSC hint message
}else{
sendOsc(OSC_ADDRESS.HINT, ''); // Clear hint message
}
refAudio.current?.pause(); // Pause any playing audio refAudio.current?.pause(); // Pause any playing audio
console.log('onCueEnd:', cue.id); console.log('onCueEnd:', cue.id);
@ -330,6 +342,8 @@ export function FreeFlow(){
break; break;
case NUMPAD_TYPE.PASSWORD: case NUMPAD_TYPE.PASSWORD:
setPassword(()=>mess); setPassword(()=>mess);
sendOsc(OSC_ADDRESS.PASSWORD, mess); // Send OSC password message
sendOsc(OSC_ADDRESS.CHOICE, OSC_ADDRESS.SAVE); // Send OSC save choice message
break; break;
} }

@ -11,18 +11,23 @@ export const OSC_ADDRESS={
SUMMARY: '/summary', SUMMARY: '/summary',
PROMPT: '/prompt', PROMPT: '/prompt',
EXPORT: '/export', EXPORT: '/export',
SAVE: '/save', CHOICE:'/choice',
DISCARD: '/discard', SAVE: 'save',
DISCARD: 'discard',
PASSWORD: '/password', PASSWORD: '/password',
HINT:'/hint',
} }
export async function sendOsc(key, message){ export async function sendOsc(key, message){
if(message === undefined || message === null || message === '') { if(message === undefined || message === null) {
console.warn('sendOsc: message is empty, skipping'); console.warn('sendOsc: message is empty, skipping');
return; return;
} }
if(key!=OSC_ADDRESS.HINT && message === '') {
return;
}
try{ try{
console.log(`Sending OSC message: ${key} -> ${message}`); console.log(`Sending OSC message: ${key} -> ${message}`);

Loading…
Cancel
Save