@coze/api
Version:
Official Coze Node.js SDK for seamless AI integration into your applications | 扣子官方 Node.js SDK,助您轻松集成 AI 能力到应用中
514 lines (513 loc) • 19.4 kB
TypeScript
interface BaseEvent {
/** Client/Server generated unique ID */
id: string;
/** Event type */
event_type: WebsocketsEventType;
}
type BaseEventWithDetail = BaseEvent & {
/** Detailed information object */
detail: EventDetail;
};
interface ChatData {
/** Chat ID */
id: string;
/** Conversation ID */
conversation_id: string;
/** Bot ID for the chat */
bot_id: string;
/** Chat creation time (Unix timestamp in seconds) */
created_at?: number;
/** Error information if chat fails */
last_error?: {
code: number;
msg: string;
};
/** Additional metadata */
meta_data?: Record<string, string>;
/** Chat status */
status?: string;
/** Usage statistics */
usage?: {
token_count?: number;
output_count?: number;
input_count?: number;
};
}
interface MessageData {
/** Message ID */
id: string;
/** Conversation ID */
conversation_id: string;
/** Bot ID */
bot_id: string;
/** Chat ID */
chat_id: string;
/** Additional metadata */
meta_data: Record<string, string>;
/** Message sender role */
role: 'user' | 'assistant';
/** Message content */
content: string;
/** Content type */
content_type: 'text' | 'object_string' | 'card' | 'audio';
/** Message type */
type: 'question' | 'answer' | 'function_call' | 'tool_output' | 'tool_response' | 'follow_up' | 'verbose';
}
export declare enum WebsocketsEventType {
/** SDK error */
CLIENT_ERROR = "client_error",
/** Connection closed */
CLOSED = "closed",
/** All events */
ALL = "all",
/** Received error event */
ERROR = "error",
/** Send text to server */
INPUT_TEXT_BUFFER_APPEND = "input_text_buffer.append",
/** No text to send, after audio all received, can close connection */
INPUT_TEXT_BUFFER_COMPLETE = "input_text_buffer.complete",
/** Send speech config to server */
SPEECH_UPDATE = "speech.update",
/** Received `speech.updated` event */
SPEECH_UPDATED = "speech.updated",
/** After speech created */
SPEECH_CREATED = "speech.created",
/** Received `input_text_buffer.complete` event */
INPUT_TEXT_BUFFER_COMPLETED = "input_text_buffer.completed",
/** Received `speech.update` event */
SPEECH_AUDIO_UPDATE = "speech.audio.update",
/** All audio received, can close connection */
SPEECH_AUDIO_COMPLETED = "speech.audio.completed",
/** Send audio to server */
INPUT_AUDIO_BUFFER_APPEND = "input_audio_buffer.append",
/** No audio to send, after text all received, can close connection */
INPUT_AUDIO_BUFFER_COMPLETE = "input_audio_buffer.complete",
/** Send transcriptions config to server */
TRANSCRIPTIONS_UPDATE = "transcriptions.update",
/** Send `input_audio_buffer.clear` event */
INPUT_AUDIO_BUFFER_CLEAR = "input_audio_buffer.clear",// TODO add
/** After transcriptions created */
TRANSCRIPTIONS_CREATED = "transcriptions.created",
/** Received `input_audio_buffer.complete` event */
INPUT_AUDIO_BUFFER_COMPLETED = "input_audio_buffer.completed",
/** Received `transcriptions.update` event */
TRANSCRIPTIONS_MESSAGE_UPDATE = "transcriptions.message.update",
/** All audio received, can close connection */
TRANSCRIPTIONS_MESSAGE_COMPLETED = "transcriptions.message.completed",
/** Received `input_audio_buffer.cleared` event */
INPUT_AUDIO_BUFFER_CLEARED = "input_audio_buffer.cleared",// TODO add
/** Received `transcriptions.updated` event */
TRANSCRIPTIONS_UPDATED = "transcriptions.updated",// TODO add
/** Send chat config to server */
CHAT_UPDATE = "chat.update",
/** Send tool outputs to server */
CONVERSATION_CHAT_SUBMIT_TOOL_OUTPUTS = "conversation.chat.submit_tool_outputs",
/** After chat created */
CHAT_CREATED = "chat.created",
/** After chat updated */
CHAT_UPDATED = "chat.updated",
/** Audio AST completed, chat started */
CONVERSATION_CHAT_CREATED = "conversation.chat.created",
/** Message created */
CONVERSATION_MESSAGE_CREATE = "conversation.message.create",// TODO add
/** Clear conversation */
CONVERSATION_CLEAR = "conversation.clear",// TODO add
/** Chat in progress */
CONVERSATION_CHAT_IN_PROGRESS = "conversation.chat.in_progress",
/** Get agent text message update */
CONVERSATION_MESSAGE_DELTA = "conversation.message.delta",
/** Need plugin submit */
CONVERSATION_CHAT_REQUIRES_ACTION = "conversation.chat.requires_action",
/** Message completed */
CONVERSATION_MESSAGE_COMPLETED = "conversation.message.completed",
/** Get agent audio message update */
CONVERSATION_AUDIO_DELTA = "conversation.audio.delta",
/** Audio message completed */
CONVERSATION_AUDIO_COMPLETED = "conversation.audio.completed",
/** All message received, can close connection */
CONVERSATION_CHAT_COMPLETED = "conversation.chat.completed",
/** Chat failed */
CONVERSATION_CHAT_FAILED = "conversation.chat.failed",// TODO add
/** Received `conversation.cleared` event */
CONVERSATION_CLEARED = "conversation.cleared",// TODO add
/** Speech started */
INPUT_AUDIO_BUFFER_SPEECH_STARTED = "input_audio_buffer.speech_started",
/** Speech stopped */
INPUT_AUDIO_BUFFER_SPEECH_STOPPED = "input_audio_buffer.speech_stopped",
/** Chat interrupted by client */
CONVERSATION_CHAT_CANCEL = "conversation.chat.cancel",
/** Chat canceled */
CONVERSATION_CHAT_CANCELED = "conversation.chat.canceled",
/** Audio transcript update */
CONVERSATION_AUDIO_TRANSCRIPT_UPDATE = "conversation.audio_transcript.update",
/** Audio transcript completed */
CONVERSATION_AUDIO_TRANSCRIPT_COMPLETED = "conversation.audio_transcript.completed",
/** Audio sentence start */
CONVERSATION_AUDIO_SENTENCE_START = "conversation.audio.sentence_start",
/** Audio dump */
DUMP_AUDIO = "dump.audio",
SIMULT_INTERPRETATION_UPDATE = "simult_interpretation.update",
SIMULT_INTERPRETATION_CREATED = "simult_interpretation.created",
SIMULT_INTERPRETATION_UPDATED = "simult_interpretation.updated",
SIMULT_INTERPRETATION_AUDIO_DELTA = "simult_interpretation.audio.delta",
SIMULT_INTERPRETATION_TRANSCRIPTION_DELTA = "simult_interpretation.transcription.delta",
SIMULT_INTERPRETATION_TRANSLATION_DELTA = "simult_interpretation.translation.delta",
SIMULT_INTERPRETATION_MESSAGE_COMPLETED = "simult_interpretation.message.completed"
}
export interface EventDetail {
/** Log ID for this request. If you encounter errors and repeated retries fail, you can contact the Coze team with this logid and error code for assistance. */
logid: string;
respond_at?: string;
}
export interface CommonErrorEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.ERROR;
data: {
code: number;
msg: string;
};
}
export interface AudioConfig {
/** Input audio format, supports pcm/wav/ogg */
format?: 'pcm' | 'wav' | 'ogg';
/** Input audio codec, supports pcm/opus/g711a/g711u */
codec?: AudioCodec;
/** Input audio sample rate, default 24000 */
sample_rate?: number;
/** Number of audio channels, default 1 (mono) */
channel?: number;
/** Audio bit depth, default 16 */
bit_depth?: number;
}
export type AudioCodec = 'pcm' | 'opus' | 'g711a' | 'g711u';
interface ChatConfig {
/** Additional information, typically used for business-related fields */
meta_data?: Record<string, string>;
/** Variables defined in the agent */
custom_variables?: Record<string, string>;
/** Additional parameters for special scenarios */
extra_params?: {
latitude?: string;
longitude?: string;
};
/** User identifier */
user_id?: string;
/** Conversation identifier */
conversation_id?: string;
/** Whether to save conversation history */
auto_save_history?: boolean;
/** Set the value of custom input parameters for the chat flow */
parameters?: Record<string, any>;
}
export interface ChatUpdateEvent extends BaseEvent {
event_type: WebsocketsEventType.CHAT_UPDATE;
data?: {
chat_config?: ChatConfig;
input_audio?: AudioConfig;
output_audio?: OutputAudio;
turn_detection?: TurnDetection;
/** Need to subscribe to the event type list of the downstream event. If not set or set to an empty array, all downstream events are subscribed. */
event_subscriptions?: string[];
/** Whether to play the prologue, default is false. */
need_play_prologue?: boolean;
/** Voice print configuration */
voice_print_config?: VoicePrintConfig;
};
}
export interface ChatUpdatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CHAT_UPDATED;
data: {
chat_config: Required<ChatConfig>;
input_audio: Required<AudioConfig>;
output_audio: Required<OutputAudio>;
};
}
export interface ConversationChatInProgressEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_CHAT_IN_PROGRESS;
data: ChatData;
}
export interface ConversationChatCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_CHAT_COMPLETED;
data: ChatData & {
completed_at?: number;
};
}
export interface ConversationChatFailedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_CHAT_FAILED;
data: ChatData & {
failed_at?: number;
};
}
export interface ConversationMessageCreateEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_MESSAGE_CREATE;
data: {
role: 'user' | 'assistant';
content_type: 'text' | 'object_string';
content: string;
};
}
export interface ConversationAudioDeltaEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_AUDIO_DELTA;
data: Omit<MessageData, 'content_type'> & {
content_type: 'audio';
};
}
export interface ConversationAudioCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_AUDIO_COMPLETED;
data: Omit<MessageData, 'content_type' | 'content'> & {
content_type: 'audio';
content: string;
};
}
interface AudioBuffer {
/** Base64 encoded audio data */
delta: string;
}
export interface InputAudioBufferAppendEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_APPEND;
data: AudioBuffer;
}
export interface InputAudioBufferCompleteEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_COMPLETE;
}
export interface TranscriptionsUpdateEvent extends BaseEvent {
event_type: WebsocketsEventType.TRANSCRIPTIONS_UPDATE;
data: {
input_audio?: AudioConfig;
};
}
export interface TranscriptionsCreatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.TRANSCRIPTIONS_CREATED;
}
export interface InputAudioBufferCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_COMPLETED;
}
export interface TranscriptionsMessageUpdateEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.TRANSCRIPTIONS_MESSAGE_UPDATE;
data: MessageData;
}
export interface TranscriptionsMessageCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.TRANSCRIPTIONS_MESSAGE_COMPLETED;
data: {
content: string;
};
}
export interface InputAudioBufferClearedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_CLEARED;
}
export interface TranscriptionsUpdatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.TRANSCRIPTIONS_UPDATED;
data: {
input_audio: Required<AudioConfig>;
};
}
export interface InputTextBufferAppendEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_TEXT_BUFFER_APPEND;
data: {
delta: string;
};
}
export interface InputTextBufferCompleteEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_TEXT_BUFFER_COMPLETE;
}
export interface SpeechUpdateEvent extends BaseEvent {
event_type: WebsocketsEventType.SPEECH_UPDATE;
data?: {
output_audio?: OutputAudio;
};
}
export interface SpeechUpdatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SPEECH_UPDATED;
data: {
output_audio: Required<OutputAudio>;
};
}
export interface SpeechCreatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SPEECH_CREATED;
}
export interface InputTextBufferCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.INPUT_TEXT_BUFFER_COMPLETED;
}
export interface SpeechAudioUpdateEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SPEECH_AUDIO_UPDATE;
data: {
delta: string;
};
}
export interface SpeechAudioCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SPEECH_AUDIO_COMPLETED;
}
export interface ClientErrorEvent extends BaseEvent {
event_type: WebsocketsEventType.CLIENT_ERROR;
data: {
code: number;
msg: string;
};
}
export interface ClosedEvent extends BaseEvent {
event_type: WebsocketsEventType.CLOSED;
}
export interface ConversationClearEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_CLEAR;
}
export interface ConversationClearedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_CLEARED;
}
export interface InputAudioBufferSpeechStartedEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_SPEECH_STARTED;
}
export interface InputAudioBufferSpeechStoppedEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_SPEECH_STOPPED;
}
export interface ConversationChatCancelEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_CHAT_CANCEL;
}
export interface ConversationChatCanceledEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_CHAT_CANCELED;
}
export interface ConversationAudioTranscriptUpdateEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_AUDIO_TRANSCRIPT_UPDATE;
data: {
content: string;
};
}
export interface ConversationAudioTranscriptCompletedEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_AUDIO_TRANSCRIPT_COMPLETED;
data: {
content: string;
};
}
export interface ConversationAudioSentenceStartEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_AUDIO_SENTENCE_START;
data: {
text: string;
};
}
export interface ChatCreatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CHAT_CREATED;
}
export interface ConversationChatCreatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_CHAT_CREATED;
data: ChatData;
}
export interface ConversationChatSubmitToolOutputsEvent extends BaseEvent {
event_type: WebsocketsEventType.CONVERSATION_CHAT_SUBMIT_TOOL_OUTPUTS;
data: {
chat_id: string;
tool_outputs: {
tool_call_id: string;
output: string;
}[];
};
}
export interface ConversationMessageCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_MESSAGE_COMPLETED;
data: MessageData;
}
export interface ConversationMessageDeltaEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.CONVERSATION_MESSAGE_DELTA;
data: MessageData;
}
export interface InputAudioBufferClearEvent extends BaseEvent {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_CLEAR;
}
export interface InputAudioBufferCompleteEvents extends BaseEvent {
event_type: WebsocketsEventType.INPUT_AUDIO_BUFFER_COMPLETE;
}
export interface AudioDumpEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.DUMP_AUDIO;
data: {
url: string;
};
}
interface OutputAudio {
/** Output audio codec */
codec?: 'pcm' | 'opus' | 'g711a' | 'g711u';
pcm_config?: {
sample_rate?: number;
};
opus_config?: {
/**输出 opus 的采样率,默认 24000。 */
sample_rate?: number;
/**输出 opus 的码率,默认 48000。 */
bitrate?: number;
/**输出 opus 是否使用 CBR 编码,默认为 false。 */
use_cbr?: boolean;
/**输出 opus 的帧长,默认是 10。 */
frame_size_ms?: number;
};
/**输出音频的语速,取值范围 [-50, 100],默认为 0。-50 表示 0.5 倍速,100 表示 2 倍速。 */
speech_rate?: number;
voice_id?: string;
/** 输出语音的情感配置 */
emotion_config?: {
/** 情感 */
emotion?: string;
/** 情绪值 */
emotion_scale?: number;
};
}
export interface TurnDetection {
/** 判停类型, client_interrupt/server_vad, 默认为 client_interrupt */
type?: TurnDetectionType;
/** server_vad模式下,VAD检测到语音之前要包含的音频量,单位ms,默认600ms */
prefix_padding_ms?: number;
/** server_vad模式下,检测语音停止的静音持续时间,单位ms,默认500ms */
silence_duration_ms?: number;
}
export interface VoicePrintConfig {
group_id: string;
score?: number;
reuse_voice_info?: boolean;
}
/** 判停类型, client_interrupt/server_vad, 默认为 client_interrupt */
export type TurnDetectionType = 'client_interrupt' | 'server_vad';
interface TranslateConfig {
hot_words?: string[];
glossary?: {
original: string;
translation: string;
}[];
from: string;
to: string;
}
export interface SimultInterpretationUpdateEvent extends BaseEvent {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_UPDATE;
data: {
input_audio?: AudioConfig;
output_audio?: OutputAudio;
translate_config?: TranslateConfig;
};
}
export interface SimultInterpretationCreatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_CREATED;
}
export interface SimultInterpretationUpdatedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_UPDATED;
data: {
input_audio: Required<AudioConfig>;
output_audio: Required<OutputAudio>;
translate_config: Required<TranslateConfig>;
};
}
export interface SimultInterpretationAudioDeltaEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_AUDIO_DELTA;
data: {
delta: string;
};
}
export interface SimultInterpretationTranscriptionDeltaEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_TRANSCRIPTION_DELTA;
data: {
delta: string;
};
}
export interface SimultInterpretationTranslationDeltaEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_TRANSLATION_DELTA;
data: {
delta: string;
};
}
export interface SimultInterpretationMessageCompletedEvent extends BaseEventWithDetail {
event_type: WebsocketsEventType.SIMULT_INTERPRETATION_MESSAGE_COMPLETED;
}
export {};