@ozaiya/openclaw-channel 0.7.7 β 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/api.d.ts +34 -0
- package/dist/src/api.js +71 -0
- package/dist/src/api.js.map +1 -1
- package/dist/src/channel.js +263 -8
- package/dist/src/channel.js.map +1 -1
- package/dist/src/phoneCall.d.ts +72 -0
- package/dist/src/phoneCall.js +360 -0
- package/dist/src/phoneCall.js.map +1 -0
- package/dist/src/ttsEngine.d.ts +32 -0
- package/dist/src/ttsEngine.js +202 -0
- package/dist/src/ttsEngine.js.map +1 -0
- package/dist/src/types.d.ts +7 -0
- package/dist/src/voiceCall.d.ts +19 -2
- package/dist/src/voiceCall.js +112 -21
- package/dist/src/voiceCall.js.map +1 -1
- package/package.json +1 -1
package/dist/src/api.d.ts
CHANGED
|
@@ -137,6 +137,40 @@ export declare function joinCall(apiBaseUrl: string, botToken: string, callId: s
|
|
|
137
137
|
* Auth: Bearer <botToken>
|
|
138
138
|
*/
|
|
139
139
|
export declare function leaveCall(apiBaseUrl: string, botToken: string, callId: string): Promise<boolean>;
|
|
140
|
+
/**
|
|
141
|
+
* Initiate an outbound phone call via SIP/Telnyx.
|
|
142
|
+
*
|
|
143
|
+
* POST /v1/bot/calls/outbound
|
|
144
|
+
* Auth: Bearer <botToken>
|
|
145
|
+
*/
|
|
146
|
+
export declare function startPhoneCall(apiBaseUrl: string, botToken: string, groupId: string, phoneNumber: string, mode?: "auto" | "manual", purpose?: string): Promise<{
|
|
147
|
+
phoneCallId: string;
|
|
148
|
+
livekitToken: string;
|
|
149
|
+
livekitUrl: string;
|
|
150
|
+
livekitRoom: string;
|
|
151
|
+
}>;
|
|
152
|
+
/**
|
|
153
|
+
* End an outbound phone call.
|
|
154
|
+
*
|
|
155
|
+
* POST /v1/bot/calls/:id/end
|
|
156
|
+
* Auth: Bearer <botToken>
|
|
157
|
+
*/
|
|
158
|
+
export declare function endPhoneCall(apiBaseUrl: string, botToken: string, phoneCallId: string, transcript?: Array<{
|
|
159
|
+
speaker: string;
|
|
160
|
+
text: string;
|
|
161
|
+
ts: number;
|
|
162
|
+
}>): Promise<boolean>;
|
|
163
|
+
/**
|
|
164
|
+
* Report phone call status updates.
|
|
165
|
+
*
|
|
166
|
+
* POST /v1/bot/calls/:id/status
|
|
167
|
+
* Auth: Bearer <botToken>
|
|
168
|
+
*/
|
|
169
|
+
export declare function updatePhoneCallStatus(apiBaseUrl: string, botToken: string, phoneCallId: string, status?: "connected" | "failed", transcript?: Array<{
|
|
170
|
+
speaker: string;
|
|
171
|
+
text: string;
|
|
172
|
+
ts: number;
|
|
173
|
+
}>): Promise<boolean>;
|
|
140
174
|
/**
|
|
141
175
|
* Probe Ozaiya API connectivity by listing bot accounts.
|
|
142
176
|
* Returns true if the API is reachable and the token is valid.
|
package/dist/src/api.js
CHANGED
|
@@ -332,6 +332,77 @@ export async function leaveCall(apiBaseUrl, botToken, callId) {
|
|
|
332
332
|
});
|
|
333
333
|
return res.ok;
|
|
334
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* Initiate an outbound phone call via SIP/Telnyx.
|
|
337
|
+
*
|
|
338
|
+
* POST /v1/bot/calls/outbound
|
|
339
|
+
* Auth: Bearer <botToken>
|
|
340
|
+
*/
|
|
341
|
+
export async function startPhoneCall(apiBaseUrl, botToken, groupId, phoneNumber, mode, purpose) {
|
|
342
|
+
const body = { groupId, phoneNumber };
|
|
343
|
+
if (mode)
|
|
344
|
+
body.mode = mode;
|
|
345
|
+
if (purpose)
|
|
346
|
+
body.purpose = purpose;
|
|
347
|
+
const res = await fetch(`${apiBaseUrl}/v1/bot/calls/outbound`, {
|
|
348
|
+
method: "POST",
|
|
349
|
+
headers: {
|
|
350
|
+
"Content-Type": "application/json",
|
|
351
|
+
Authorization: `Bearer ${botToken}`,
|
|
352
|
+
},
|
|
353
|
+
body: JSON.stringify(body),
|
|
354
|
+
signal: AbortSignal.timeout(30_000),
|
|
355
|
+
});
|
|
356
|
+
if (!res.ok) {
|
|
357
|
+
const text = await res.text().catch(() => "");
|
|
358
|
+
throw new Error(`Ozaiya API error ${res.status}: ${text}`);
|
|
359
|
+
}
|
|
360
|
+
return (await res.json());
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* End an outbound phone call.
|
|
364
|
+
*
|
|
365
|
+
* POST /v1/bot/calls/:id/end
|
|
366
|
+
* Auth: Bearer <botToken>
|
|
367
|
+
*/
|
|
368
|
+
export async function endPhoneCall(apiBaseUrl, botToken, phoneCallId, transcript) {
|
|
369
|
+
const body = {};
|
|
370
|
+
if (transcript)
|
|
371
|
+
body.transcript = transcript;
|
|
372
|
+
const res = await fetch(`${apiBaseUrl}/v1/bot/calls/${phoneCallId}/end`, {
|
|
373
|
+
method: "POST",
|
|
374
|
+
headers: {
|
|
375
|
+
"Content-Type": "application/json",
|
|
376
|
+
Authorization: `Bearer ${botToken}`,
|
|
377
|
+
},
|
|
378
|
+
body: JSON.stringify(body),
|
|
379
|
+
signal: AbortSignal.timeout(15_000),
|
|
380
|
+
});
|
|
381
|
+
return res.ok;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Report phone call status updates.
|
|
385
|
+
*
|
|
386
|
+
* POST /v1/bot/calls/:id/status
|
|
387
|
+
* Auth: Bearer <botToken>
|
|
388
|
+
*/
|
|
389
|
+
export async function updatePhoneCallStatus(apiBaseUrl, botToken, phoneCallId, status, transcript) {
|
|
390
|
+
const body = {};
|
|
391
|
+
if (status)
|
|
392
|
+
body.status = status;
|
|
393
|
+
if (transcript)
|
|
394
|
+
body.transcript = transcript;
|
|
395
|
+
const res = await fetch(`${apiBaseUrl}/v1/bot/calls/${phoneCallId}/status`, {
|
|
396
|
+
method: "POST",
|
|
397
|
+
headers: {
|
|
398
|
+
"Content-Type": "application/json",
|
|
399
|
+
Authorization: `Bearer ${botToken}`,
|
|
400
|
+
},
|
|
401
|
+
body: JSON.stringify(body),
|
|
402
|
+
signal: AbortSignal.timeout(15_000),
|
|
403
|
+
});
|
|
404
|
+
return res.ok;
|
|
405
|
+
}
|
|
335
406
|
/**
|
|
336
407
|
* Probe Ozaiya API connectivity by listing bot accounts.
|
|
337
408
|
* Returns true if the API is reachable and the token is valid.
|
package/dist/src/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/src/channel.js
CHANGED
|
@@ -9,7 +9,7 @@ import fs from "node:fs/promises";
|
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import { registerPluginHttpRoute } from "openclaw/plugin-sdk/webhook-ingress";
|
|
11
11
|
import { unwrapGroupKey, decryptMessage, encryptMessage, wrapGroupKey } from "./crypto.js";
|
|
12
|
-
import { sendMessage, probeApi, fetchGroups, addMember, getUserPublicKeys, toggleReaction, editMessage, deleteMessage, pinMessage, unpinMessage, uploadFile, searchUsers, fetchLinkPreview, joinCall, leaveCall, } from "./api.js";
|
|
12
|
+
import { sendMessage, probeApi, fetchGroups, addMember, getUserPublicKeys, toggleReaction, editMessage, deleteMessage, pinMessage, unpinMessage, uploadFile, searchUsers, fetchLinkPreview, joinCall, leaveCall, startPhoneCall, endPhoneCall, updatePhoneCallStatus, } from "./api.js";
|
|
13
13
|
import { botCreateDirect, botCreateGroup } from "./botActions.js";
|
|
14
14
|
import { buildInlineKeyboardSummary, buildLinkPreviewSummary, normalizeMessageText, normalizeToolInlineKeyboardRows, } from "./richContent.js";
|
|
15
15
|
import { normalizeCallbackQueryPayload } from "./callbackQuery.js";
|
|
@@ -19,6 +19,7 @@ import { getOzaiyaRuntime } from "./runtime.js";
|
|
|
19
19
|
import { maybeTranscribeInboundAudio, prependVoiceTranscriptToAgentInput, resolveOzaiyaSttConfig, } from "./transcribeAudio.js";
|
|
20
20
|
import { startGatewayMode } from "./gateway.js";
|
|
21
21
|
import { VoiceCallSession } from "./voiceCall.js";
|
|
22
|
+
import { PhoneCallSession } from "./phoneCall.js";
|
|
22
23
|
const DEFAULT_API_BASE_URL = "https://api.ozai.dev";
|
|
23
24
|
const DEFAULT_WEBHOOK_PATH = "/ozaiya/webhook";
|
|
24
25
|
const DEFAULT_ACCOUNT_ID = "default";
|
|
@@ -34,6 +35,10 @@ const unwrappedKeys = new Map();
|
|
|
34
35
|
const groupToBotAccountId = new Map();
|
|
35
36
|
// Active voice call sessions keyed by callId
|
|
36
37
|
const activeVoiceCalls = new Map();
|
|
38
|
+
// Active phone call sessions keyed by phoneCallId
|
|
39
|
+
const activePhoneCalls = new Map();
|
|
40
|
+
// Map groupId β phoneCallId for active phone calls (for manual mode message routing)
|
|
41
|
+
const groupToActivePhoneCall = new Map();
|
|
37
42
|
// Runtime state tracking
|
|
38
43
|
const runtimeState = new Map();
|
|
39
44
|
function recordState(accountId, patch) {
|
|
@@ -528,7 +533,7 @@ async function synthesizeSpeechVolcengine(text, config, log) {
|
|
|
528
533
|
*/
|
|
529
534
|
async function synthesizeVoiceReply(text,
|
|
530
535
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
531
|
-
ctx) {
|
|
536
|
+
ctx, voiceOverride) {
|
|
532
537
|
const ozaiyaChannelCfg = (ctx.cfg?.channels?.ozaiya ?? {});
|
|
533
538
|
const account = ctx.account;
|
|
534
539
|
const perBotVoice = account?.voiceConfig;
|
|
@@ -538,6 +543,7 @@ ctx) {
|
|
|
538
543
|
const volcCfg = {
|
|
539
544
|
appId: perBotVoice.appId,
|
|
540
545
|
accessToken: perBotVoice.accessToken,
|
|
546
|
+
...(voiceOverride ? { voice: voiceOverride } : {}),
|
|
541
547
|
};
|
|
542
548
|
const buf = await synthesizeSpeechVolcengine(text, volcCfg, ctx.log);
|
|
543
549
|
if (buf) {
|
|
@@ -555,8 +561,11 @@ ctx) {
|
|
|
555
561
|
}
|
|
556
562
|
// 1. Volcengine TTS (preferred for Chinese)
|
|
557
563
|
if (ozaiyaChannelCfg?.volcengineTts?.arkApiKey || ozaiyaChannelCfg?.volcengineTts?.apiKey || ozaiyaChannelCfg?.volcengineTts?.appId) {
|
|
558
|
-
|
|
559
|
-
|
|
564
|
+
const effectiveVolcCfg = voiceOverride
|
|
565
|
+
? { ...ozaiyaChannelCfg.volcengineTts, voice: voiceOverride }
|
|
566
|
+
: ozaiyaChannelCfg.volcengineTts;
|
|
567
|
+
ctx.log?.info?.(`ozaiya: using Volcengine TTS (voice=${effectiveVolcCfg.voice ?? 'default'})`);
|
|
568
|
+
const buf = await synthesizeSpeechVolcengine(text, effectiveVolcCfg, ctx.log);
|
|
560
569
|
if (buf) {
|
|
561
570
|
const ext = `.${ozaiyaChannelCfg.volcengineTts.encoding ?? "mp3"}`;
|
|
562
571
|
return { data: buf, ext };
|
|
@@ -926,6 +935,8 @@ export const ozaiyaPlugin = {
|
|
|
926
935
|
createPinMessageTool(account),
|
|
927
936
|
createSearchUsersTool(account),
|
|
928
937
|
createListGroupsTool(account),
|
|
938
|
+
createMakePhoneCallTool(account, cfg),
|
|
939
|
+
createHangUpCallTool(account),
|
|
929
940
|
];
|
|
930
941
|
}),
|
|
931
942
|
gateway: {
|
|
@@ -1066,6 +1077,12 @@ export const ozaiyaPlugin = {
|
|
|
1066
1077
|
session.disconnect().catch(() => { });
|
|
1067
1078
|
activeVoiceCalls.delete(callId);
|
|
1068
1079
|
}
|
|
1080
|
+
// Disconnect all active phone call sessions
|
|
1081
|
+
for (const [phoneCallId, session] of activePhoneCalls) {
|
|
1082
|
+
session.disconnect().catch(() => { });
|
|
1083
|
+
activePhoneCalls.delete(phoneCallId);
|
|
1084
|
+
}
|
|
1085
|
+
groupToActivePhoneCall.clear();
|
|
1069
1086
|
for (const id of gatewayBotAccounts.keys()) {
|
|
1070
1087
|
recordState(id, { running: false, lastStopAt: Date.now() });
|
|
1071
1088
|
}
|
|
@@ -1749,6 +1766,227 @@ function createListGroupsTool(account) {
|
|
|
1749
1766
|
},
|
|
1750
1767
|
};
|
|
1751
1768
|
}
|
|
1769
|
+
function createMakePhoneCallTool(account, cfg) {
|
|
1770
|
+
return {
|
|
1771
|
+
label: "Make Phone Call",
|
|
1772
|
+
name: "make_phone_call",
|
|
1773
|
+
ownerOnly: false,
|
|
1774
|
+
description: "Initiate an outbound phone call to a PSTN number via SIP. " +
|
|
1775
|
+
"The call is recorded and the recording + transcript are saved to the chat. " +
|
|
1776
|
+
"In 'auto' mode, you speak directly to the callee via STT/TTS. " +
|
|
1777
|
+
"In 'manual' mode, the callee's speech is transcribed to chat for the user to respond.",
|
|
1778
|
+
parameters: {
|
|
1779
|
+
type: "object",
|
|
1780
|
+
properties: {
|
|
1781
|
+
groupId: {
|
|
1782
|
+
type: "string",
|
|
1783
|
+
description: "The group/DM where the call record will be posted.",
|
|
1784
|
+
},
|
|
1785
|
+
phoneNumber: {
|
|
1786
|
+
type: "string",
|
|
1787
|
+
description: "E.164 phone number to call (e.g. +8613800138000).",
|
|
1788
|
+
},
|
|
1789
|
+
mode: {
|
|
1790
|
+
type: "string",
|
|
1791
|
+
enum: ["auto", "manual"],
|
|
1792
|
+
description: "auto = AI handles conversation, manual = transcribe to chat for user to reply. Default: auto.",
|
|
1793
|
+
},
|
|
1794
|
+
purpose: {
|
|
1795
|
+
type: "string",
|
|
1796
|
+
description: "Brief note about why you're making this call (logged for reference).",
|
|
1797
|
+
},
|
|
1798
|
+
},
|
|
1799
|
+
required: ["groupId", "phoneNumber"],
|
|
1800
|
+
},
|
|
1801
|
+
execute: async (_toolCallId, rawArgs) => {
|
|
1802
|
+
const args = rawArgs;
|
|
1803
|
+
try {
|
|
1804
|
+
const mode = args.mode ?? "auto";
|
|
1805
|
+
const result = await startPhoneCall(account.apiBaseUrl, account.botToken, args.groupId, args.phoneNumber, mode, args.purpose);
|
|
1806
|
+
// Report connected status
|
|
1807
|
+
updatePhoneCallStatus(account.apiBaseUrl, account.botToken, result.phoneCallId, "connected").catch(() => { });
|
|
1808
|
+
const ozaiyaCfg = (cfg?.channels?.ozaiya ?? {});
|
|
1809
|
+
const voiceCallCfg = ozaiyaCfg.voiceCall ?? {};
|
|
1810
|
+
// Override per-bot voice config and pass volcengineTts from channel config
|
|
1811
|
+
const effectiveVoiceCallCfg = { ...voiceCallCfg };
|
|
1812
|
+
if (account.voiceConfig?.provider === "deepgram" && account.voiceConfig.apiKey) {
|
|
1813
|
+
effectiveVoiceCallCfg.deepgramApiKey = account.voiceConfig.apiKey;
|
|
1814
|
+
}
|
|
1815
|
+
if (!effectiveVoiceCallCfg.volcengineTts && ozaiyaCfg.volcengineTts) {
|
|
1816
|
+
effectiveVoiceCallCfg.volcengineTts = ozaiyaCfg.volcengineTts;
|
|
1817
|
+
}
|
|
1818
|
+
// Create PhoneCallSession
|
|
1819
|
+
const session = new PhoneCallSession({
|
|
1820
|
+
phoneCallId: result.phoneCallId,
|
|
1821
|
+
groupId: args.groupId,
|
|
1822
|
+
livekitToken: result.livekitToken,
|
|
1823
|
+
livekitUrl: result.livekitUrl,
|
|
1824
|
+
mode,
|
|
1825
|
+
voiceCallConfig: effectiveVoiceCallCfg,
|
|
1826
|
+
onTranscript: (text) => {
|
|
1827
|
+
if (mode === "auto") {
|
|
1828
|
+
// Auto mode: dispatch to agent, speak reply
|
|
1829
|
+
void handlePhoneAutoTranscript(text, session, account, cfg, args.groupId);
|
|
1830
|
+
}
|
|
1831
|
+
else {
|
|
1832
|
+
// Manual mode: post to chat as a message
|
|
1833
|
+
void postPhoneTranscriptToChat(text, account, args.groupId);
|
|
1834
|
+
}
|
|
1835
|
+
},
|
|
1836
|
+
onPhoneHangUp: () => {
|
|
1837
|
+
// Phone person hung up β end the call
|
|
1838
|
+
void cleanupPhoneCall(result.phoneCallId, session, account);
|
|
1839
|
+
},
|
|
1840
|
+
});
|
|
1841
|
+
activePhoneCalls.set(result.phoneCallId, session);
|
|
1842
|
+
groupToActivePhoneCall.set(args.groupId, result.phoneCallId);
|
|
1843
|
+
// Connect to LiveKit
|
|
1844
|
+
await session.connect();
|
|
1845
|
+
return {
|
|
1846
|
+
content: [{
|
|
1847
|
+
type: "text",
|
|
1848
|
+
text: `Phone call initiated (ID: ${result.phoneCallId}). ` +
|
|
1849
|
+
`Calling ${args.phoneNumber} in ${mode} mode. ` +
|
|
1850
|
+
`The call is being recorded. Use hang_up_call to end it.`,
|
|
1851
|
+
}],
|
|
1852
|
+
};
|
|
1853
|
+
}
|
|
1854
|
+
catch (err) {
|
|
1855
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1856
|
+
return { content: [{ type: "text", text: `Error starting phone call: ${msg}` }] };
|
|
1857
|
+
}
|
|
1858
|
+
},
|
|
1859
|
+
};
|
|
1860
|
+
}
|
|
1861
|
+
function createHangUpCallTool(account) {
|
|
1862
|
+
return {
|
|
1863
|
+
label: "Hang Up Call",
|
|
1864
|
+
name: "hang_up_call",
|
|
1865
|
+
ownerOnly: false,
|
|
1866
|
+
description: "End an active outbound phone call.",
|
|
1867
|
+
parameters: {
|
|
1868
|
+
type: "object",
|
|
1869
|
+
properties: {
|
|
1870
|
+
phoneCallId: {
|
|
1871
|
+
type: "string",
|
|
1872
|
+
description: "The phone call ID returned by make_phone_call.",
|
|
1873
|
+
},
|
|
1874
|
+
},
|
|
1875
|
+
required: ["phoneCallId"],
|
|
1876
|
+
},
|
|
1877
|
+
execute: async (_toolCallId, rawArgs) => {
|
|
1878
|
+
const args = rawArgs;
|
|
1879
|
+
try {
|
|
1880
|
+
const session = activePhoneCalls.get(args.phoneCallId);
|
|
1881
|
+
if (session) {
|
|
1882
|
+
await cleanupPhoneCall(args.phoneCallId, session, account);
|
|
1883
|
+
}
|
|
1884
|
+
else {
|
|
1885
|
+
// No local session, still try API
|
|
1886
|
+
await endPhoneCall(account.apiBaseUrl, account.botToken, args.phoneCallId);
|
|
1887
|
+
}
|
|
1888
|
+
return {
|
|
1889
|
+
content: [{ type: "text", text: `Phone call ${args.phoneCallId} ended.` }],
|
|
1890
|
+
};
|
|
1891
|
+
}
|
|
1892
|
+
catch (err) {
|
|
1893
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1894
|
+
return { content: [{ type: "text", text: `Error ending phone call: ${msg}` }] };
|
|
1895
|
+
}
|
|
1896
|
+
},
|
|
1897
|
+
};
|
|
1898
|
+
}
|
|
1899
|
+
/**
|
|
1900
|
+
* Handle phone transcription in auto mode: dispatch to agent, speak the reply.
|
|
1901
|
+
*/
|
|
1902
|
+
async function handlePhoneAutoTranscript(text, session, account, cfg, groupId) {
|
|
1903
|
+
if (session.isDisposed)
|
|
1904
|
+
return;
|
|
1905
|
+
const runtime = getOzaiyaRuntime();
|
|
1906
|
+
const ch = runtime.channel;
|
|
1907
|
+
const route = ch.routing.resolveAgentRoute({
|
|
1908
|
+
cfg,
|
|
1909
|
+
channel: "ozaiya",
|
|
1910
|
+
accountId: account.accountId,
|
|
1911
|
+
peer: { kind: "group", id: groupId },
|
|
1912
|
+
});
|
|
1913
|
+
const ozaiyaCfg = (cfg?.channels?.ozaiya ?? {});
|
|
1914
|
+
const voicePrompt = ozaiyaCfg.voiceCall?.agentPrompt ??
|
|
1915
|
+
"[Phone Call] You are in a live phone call. Your response will be spoken aloud via TTS. " +
|
|
1916
|
+
"Rules: respond concisely (1-3 sentences), use natural spoken language, " +
|
|
1917
|
+
"never use markdown/code blocks/bullet lists/URLs/emojis. " +
|
|
1918
|
+
"Do not say \"sure\" or \"of course\" β just answer directly.";
|
|
1919
|
+
const bodyForAgent = `${voicePrompt}\n\n${text}`;
|
|
1920
|
+
const body = `[ozaiya] from: phone caller | at: ${new Date().toISOString()}\n---\n${text}`;
|
|
1921
|
+
const msgCtx = ch.reply.finalizeInboundContext({
|
|
1922
|
+
Body: body,
|
|
1923
|
+
BodyForAgent: bodyForAgent,
|
|
1924
|
+
RawBody: text,
|
|
1925
|
+
CommandBody: text,
|
|
1926
|
+
From: `ozaiya:group:${groupId}`,
|
|
1927
|
+
To: `ozaiya:group:${groupId}`,
|
|
1928
|
+
SessionKey: route.sessionKey,
|
|
1929
|
+
AccountId: route.accountId,
|
|
1930
|
+
ChatType: "group",
|
|
1931
|
+
ConversationLabel: `group:${groupId}`,
|
|
1932
|
+
GroupSubject: groupId,
|
|
1933
|
+
SenderId: "phone-caller",
|
|
1934
|
+
SenderName: "Phone Caller",
|
|
1935
|
+
Provider: "ozaiya",
|
|
1936
|
+
Surface: "ozaiya-phone",
|
|
1937
|
+
MessageSid: `phone-${Date.now()}`,
|
|
1938
|
+
Timestamp: Date.now(),
|
|
1939
|
+
NumFiles: 0,
|
|
1940
|
+
NumMedia: 0,
|
|
1941
|
+
HasFiles: false,
|
|
1942
|
+
CommandAuthorized: true,
|
|
1943
|
+
OriginatingChannel: "ozaiya",
|
|
1944
|
+
OriginatingTo: `ozaiya:group:${groupId}`,
|
|
1945
|
+
});
|
|
1946
|
+
await ch.reply.dispatchReplyWithBufferedBlockDispatcher({
|
|
1947
|
+
ctx: msgCtx,
|
|
1948
|
+
cfg,
|
|
1949
|
+
dispatcherOptions: {
|
|
1950
|
+
deliver: async (replyPayload, _info) => {
|
|
1951
|
+
const replyText = replyPayload.text;
|
|
1952
|
+
if (!replyText?.trim() || session.isDisposed)
|
|
1953
|
+
return;
|
|
1954
|
+
await session.speakReply(replyText);
|
|
1955
|
+
},
|
|
1956
|
+
onError: (err) => {
|
|
1957
|
+
// eslint-disable-next-line no-console
|
|
1958
|
+
console.warn(`ozaiya: phone call auto-reply error: ${String(err)}`);
|
|
1959
|
+
},
|
|
1960
|
+
},
|
|
1961
|
+
});
|
|
1962
|
+
}
|
|
1963
|
+
/**
|
|
1964
|
+
* Post phone person's transcribed speech to the chat group (manual mode).
|
|
1965
|
+
*/
|
|
1966
|
+
async function postPhoneTranscriptToChat(text, account, groupId) {
|
|
1967
|
+
try {
|
|
1968
|
+
const groupKey = unwrappedKeys.get(groupId);
|
|
1969
|
+
if (!groupKey)
|
|
1970
|
+
return;
|
|
1971
|
+
const content = {
|
|
1972
|
+
text: `π ε―ΉζΉθ―΄: ${text}`,
|
|
1973
|
+
};
|
|
1974
|
+
const encrypted = encryptMessage(content, groupKey);
|
|
1975
|
+
await sendMessage(account.apiBaseUrl, account.botToken, groupId, encrypted);
|
|
1976
|
+
}
|
|
1977
|
+
catch {
|
|
1978
|
+
// Fire-and-forget
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
/**
|
|
1982
|
+
* Clean up a phone call session: disconnect, end call via API, remove from maps.
|
|
1983
|
+
*/
|
|
1984
|
+
async function cleanupPhoneCall(phoneCallId, session, account) {
|
|
1985
|
+
activePhoneCalls.delete(phoneCallId);
|
|
1986
|
+
groupToActivePhoneCall.delete(session.groupId);
|
|
1987
|
+
await session.disconnect();
|
|
1988
|
+
await endPhoneCall(account.apiBaseUrl, account.botToken, phoneCallId, session.transcript).catch(() => { });
|
|
1989
|
+
}
|
|
1752
1990
|
/**
|
|
1753
1991
|
* Handle an inbound webhook message:
|
|
1754
1992
|
* 1. Decrypt message content
|
|
@@ -1760,7 +1998,7 @@ function createListGroupsTool(account) {
|
|
|
1760
1998
|
async function handleInboundMessage(payload,
|
|
1761
1999
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1762
2000
|
ctx) {
|
|
1763
|
-
const { groupId, groupType = "group", message, replyAllowed = true, voiceReply, voiceReplyPrompt, context } = payload;
|
|
2001
|
+
const { groupId, groupType = "group", message, replyAllowed = true, voiceReply, voiceReplyPrompt, voiceReplyVoice, context } = payload;
|
|
1764
2002
|
const account = ctx.account;
|
|
1765
2003
|
// Record inbound activity
|
|
1766
2004
|
recordState(account.accountId, { lastInboundAt: Date.now() });
|
|
@@ -1787,6 +2025,20 @@ ctx) {
|
|
|
1787
2025
|
return;
|
|
1788
2026
|
}
|
|
1789
2027
|
const messageText = normalizeMessageText(content.text);
|
|
2028
|
+
// Manual mode phone call: if this group has an active phone call in manual mode,
|
|
2029
|
+
// speak the user's text message to the phone via TTS instead of dispatching to agent.
|
|
2030
|
+
const activePhoneCallId = groupToActivePhoneCall.get(groupId);
|
|
2031
|
+
if (activePhoneCallId && messageText) {
|
|
2032
|
+
const phoneSession = activePhoneCalls.get(activePhoneCallId);
|
|
2033
|
+
if (phoneSession && phoneSession.mode === "manual" && !phoneSession.isDisposed) {
|
|
2034
|
+
// Don't intercept bot's own messages (transcriptions posted by the bot)
|
|
2035
|
+
if (message.senderId !== account.accountId) {
|
|
2036
|
+
ctx.log?.info?.(`ozaiya: routing user message to active phone call ${activePhoneCallId} (manual mode)`);
|
|
2037
|
+
phoneSession.speakReply(messageText).catch(() => { });
|
|
2038
|
+
return; // Don't dispatch to agent
|
|
2039
|
+
}
|
|
2040
|
+
}
|
|
2041
|
+
}
|
|
1790
2042
|
const inboundAttachments = normalizeAttachments(content.files);
|
|
1791
2043
|
const attachmentSummary = buildAttachmentSummary(inboundAttachments);
|
|
1792
2044
|
const linkPreviewSummary = buildLinkPreviewSummary(content.linkPreviews);
|
|
@@ -1964,13 +2216,13 @@ ctx) {
|
|
|
1964
2216
|
dispatcherOptions: {
|
|
1965
2217
|
deliver: async (replyPayload, _info) => {
|
|
1966
2218
|
const replyText = replyPayload.text;
|
|
1967
|
-
ctx.log?.info?.(`ozaiya: deliver called, text length=${replyText?.length ?? 0}, empty=${!replyText?.trim()}, voiceReply=${voiceReply}`);
|
|
2219
|
+
ctx.log?.info?.(`ozaiya: deliver called, text length=${replyText?.length ?? 0}, empty=${!replyText?.trim()}, voiceReply=${voiceReply}, voiceReplyVoice=${voiceReplyVoice ?? 'none'}`);
|
|
1968
2220
|
if (!replyText?.trim())
|
|
1969
2221
|
return;
|
|
1970
2222
|
// Voice reply: synthesize TTS audio and send as voice message
|
|
1971
2223
|
if (voiceReply) {
|
|
1972
2224
|
ctx.log?.info?.(`ozaiya: voice reply β synthesizing TTS for group ${groupId}`);
|
|
1973
|
-
const audioBuffer = await synthesizeVoiceReply(replyText, ctx);
|
|
2225
|
+
const audioBuffer = await synthesizeVoiceReply(replyText, ctx, voiceReplyVoice ?? undefined);
|
|
1974
2226
|
if (audioBuffer) {
|
|
1975
2227
|
const ext = audioBuffer.ext;
|
|
1976
2228
|
const mime = ext === ".mp3" ? "audio/mpeg" : ext === ".opus" ? "audio/ogg" : ext === ".wav" ? "audio/wav" : "audio/mpeg";
|
|
@@ -2213,11 +2465,14 @@ ctx) {
|
|
|
2213
2465
|
id: payload.groupId,
|
|
2214
2466
|
},
|
|
2215
2467
|
});
|
|
2216
|
-
// Override
|
|
2468
|
+
// Override per-bot voice config and pass volcengineTts from channel config
|
|
2217
2469
|
const effectiveVoiceCallCfg = { ...voiceCallCfg };
|
|
2218
2470
|
if (account.voiceConfig?.provider === 'deepgram' && account.voiceConfig.apiKey) {
|
|
2219
2471
|
effectiveVoiceCallCfg.deepgramApiKey = account.voiceConfig.apiKey;
|
|
2220
2472
|
}
|
|
2473
|
+
if (!effectiveVoiceCallCfg.volcengineTts && ozaiyaCfg.volcengineTts) {
|
|
2474
|
+
effectiveVoiceCallCfg.volcengineTts = ozaiyaCfg.volcengineTts;
|
|
2475
|
+
}
|
|
2221
2476
|
const session = new VoiceCallSession({
|
|
2222
2477
|
callId: payload.callId,
|
|
2223
2478
|
groupId: payload.groupId,
|