Использование команды StartSmartSearch
Обновлено 15 января 2024
StartSmartSearch
— это команда поиска от сценария. Команда содержит текстовое поле query
, по которому выполняется поиск. После завершения поиска возвращается serverAction
с результатами, которые выведет ассистент.
Пример подписки на команду StartSmartSearch
:
import React, { FC } from 'react';
import { createAssistantClient, AppEvent, AssistantStartSmartSearch } from '@salutejs/client';
import { FloatingAssistantChatLottie } from '@sberdevices/assistant-web-sdk/floatingAssistantChatLottie';
import { doSomething } from '../utils';
const assistant = createAssistantClient(...);
assistant.on('app', (event: AppEvent) => {
if (event.command?.type === 'start_smart_search') {
doSomething((event.command as AssistantStartSmartSearch).start_smart_search.query);
}
});
export const FloatingChatWithAssistant: FC = () => {
return <FloatingAssistantChatLottie {...props} assistant={assistant} />;
};
Пример отправки ответа с результатами поиска:
import React, { FC } from 'react';
import { FloatingAssistantChatLottie } from '@sberdevices/assistant-web-sdk/floatingAssistantChatLottie';
import { createAssistantClient } from '@salutejs/client';
interface StartSmartSearchFeature {
title: string; // Название карточки
subtitle?: string; // Не поддерживается в текущей реализации
icon: string; // Идентификатор иконки из DS (например, 'ic_36_sber_alt1')
link: string; // Ссылка для перехода (например, '/cards/unlocking/{{cardId}}')
category: string; // Идентификатор категории продукта
}
interface StartSmartSearchProducts {
category: string; // Совпадает со значением `category` StartSmartSearchFeature
id: string; // Идентификатор продукта
description: string; // Описание продукта
lastDiget: string; // Последние 4 цифры карты
}
interface StartSmartSearchResults {
start_smart_search: {
feature: StartSmartSearchFeature[];
products: StartSmartSearchProducts[];
}
}
const assistant = createAssistantClient(...);
const sendSearchResults = (results: StartSmartSearchResults['start_smart_search']) => {
assistant.sendServerAction({
start_smart_search: results,
});
}
export const ChatWithAssistant: FC = () => {
return <FloatingAssistantChatLottie {...props} assistant={assistant} />;
};