import { createClient, Client, MesaageFormat } from '@aishift/widget-sdk'
async function asyncFunction() {
// SDK クライアント作成
const client = await createClient({
tenantId: 'tenantId',
projectId: 'projectId',
tenantSubDomain: 'tenantSubDomain',
updateMessageCallback: (type, messageId, message, isEnd) => {
// メッセージが更新されたときのコールバック
},
addMessageCallback: message => {
// メッセージが追加されたときのコールバック
},
})
// メッセージ送信
client.send({message: "こんにちは"}, onError: () => {
console.error(error)
})
// promptId つきでメッセージ送信
client.sendWithPrompt({
promptId: 'promptId',
scenarioVersion: '1',
message: "こんにちは",
errorCallback: error => {
console.error(error);
},
});
// 過去のメッセージ取得
const pastMessages: MessageFormat[] = await client.getPastMessages({limit: 20, at: 1608623909884})
// ウェルカムメッセージ取得
const { welcomeMessage, recommendations } = client.getWelcomeMessage();
// 初めてログインしたユーザかどうか
client.isLoggedIn()
// シナリオjson取得
const scenario = await client.getScenarioJson()
// シナリオ遷移状態保存
client.storeScenarioState({ version: '1', sceneId: 'sceneId' });
// シナリオ遷移状態取得
const scenarioState = client.getScenarioState()
}
SDK クライアントを作成する
createClient: ({
tenantId,
tenantSubDomain,
projectId,
updateMessageCallback,
addMessageCallback,
}: {
tenantId: string;
tenantSubDomain: string;
projectId: string;
updateMessageCallback: (
type: string,
messageId: string,
message: MessageFormt,
isEnd: boolean
) => void;
addMessageCallback: (message: MessageFormat) => void;
}) => Promise<Client>;
-
tenantId
: テナント ID -
tenantSubDomain
: テナントサブドメイン -
projectId
: プロジェクト ID -
updateMessageCallback
: LLM による回答メッセージに変更があった時に呼ばれるコールバック -
addMessageCallback
: LLM による回答メッセージが新規作成された時に呼ばれるコールバック
-
Client
: SDK クライアント
{
at: number,
type: "message",
messages: [
{
attachment: {
mediaType: "plainText",
payload: string,
referenceUrls: {title: string, link: string}[],
followUpUrls: {title: string, link: string}[]
}
}
],
sender: {
id: string,
name: string,
type: 'Bot' | 'Customer' | 'Operator'
},
isWelcome: boolean,
referer: string,
senderMessageId: string
isEnd: boolean
}
-
at
: メッセージが送信された時間 (unixtime) -
messages[index].attachment.payload
: メッセージ本文 -
messages[index].attachment.referenceUrls
: LLM が回答に使用したリソースの URL のリスト -
messages[index].attachment.followUpUrls
: LLM 提案する回答をフォローするリソースの URL のリスト -
sender.type
: ボット or カスタマー (チャットユーザー) or オペレーター -
senderMessageId
: メッセージごとの一意な ID -
isEnd
: メッセージの更新が終わったかを判定するフラグ
at
より前のメッセージを最大 limit
だけ取得する
getPastMessages: ({ limit, at }: { limit: number; at: number }) => Promise<MessageFormat[]>;
-
limit
: 取得するメッセージの最大数 -
at
: 取得したいメッセージの最新時刻 (unixtime)
-
messages
:MessageFormat
型オブジェクトの配列
LLM にメッセージを送信する
send: ({ message, errorCallback }: { message: string; errorCallback: (error: Error) => void }) =>
string;
-
message
: LLM に送信するメッセージ -
errorCallback
: エラーが発生したときに呼ばれるコールバック
-
senderMessageId
: メッセージごとの一意な ID
LLM にプロンプトを指定してメッセージを送信する
sendWithPrompt: ({
message,
promptId,
scenarioVersion,
errorCallback,
}: {
message: string;
promptId: string;
scenarioVersion: string;
errorCallback: (error: Error) => void;
}) => string;
-
message
: LLM に送信するメッセージ -
promptId
: プロンプトの ID -
scenarioVersion
: 固定シナリオのバージョン -
errorCallback
: エラーが発生したときに呼ばれるコールバック
-
senderMessageId
: メッセージごとの一意な ID
ウェルカムメッセージ取得
getWelcomeMessage: () => {welcomeMessage: string; recommendations: string[]};
- welcomeMessage: ウェルカムメッセージ
- recommendations: オススメ質問の配列
ログイン済みかどうかを返す
isLoggedIn: () => Promise<boolean>;
-
isLoggedIn
: ログイン済み -> true 未ログイン -> false
カスタマー情報の取得をする
getCustomerInfo: () => Promise<{ customerId: string }>;
-
customerId
: チャットユーザーの ID
メッセージ更新コールバックの解除する
unsubscribeMessageCallback: () => void;
固定シナリオ JSON を返す
getScenarioJson: () => Promise<ScenarioJson>;
-
scenarioJson
: 固定シナリオ JSON
type ScenarioJson = {
scenario: Scene;
version: string;
};
type Scene = {
id: string;
title: string;
content: string;
imagePath: string;
children: Scene[];
mainMessage?: string;
promptId?: string;
messageOptions?: {
label: string;
value: string;
}[];
};
固定シナリオの遷移状態を取得する
getScenarioState: () => { version: string; sceneId: string } | undefined;
-
version
: 固定シナリオのバージョン -
sceneId
: 固定シナリオのシーン ID
固定シナリオの遷移状態を保存する
storeScenarioState: ({ version, sceneId }: { version: string; sceneId: string }) => void;
-
version
: 固定シナリオのバージョン -
sceneId
: 固定シナリオのシーン ID
SDK のバージョンを返す
getVersion: () => string;
-
version
: SDK のバージョン