Собственный AI-сервис
Собственный AI-сервис не создаёт отдельный процесс устройства. Подключение, события AI-запросов, выбранный устройством аудиоканал SCO или Opus, координация сессии и очистка по-прежнему выполняются по документации соответствующей функции AIBuds.
Отличаются только авторизация и AI-обработка: приложение авторизует собственный сервис, сообщает результат устройству и использует свою AI-реализацию вместо сервиса из SDK.
Передача результата авторизации собственного AI
Авторизуйте AI-сервис приложения, сообщите результат устройству и продолжите стандартный AI-процесс по запросу устройства.
Что меняется
Приложение отвечает за авторизацию своего AI-сервиса и обработку AI-запросов. После каждой попытки авторизации оно сообщает текущий результат через reportSelfAiServiceAuthResult.
Что остаётся прежним
Процесс устройства AIBuds заменять не нужно. Для AI-диалога, AI-аудиозаписи, потокового распознавания, синхронного перевода или другой функции продолжайте использовать документированные события устройства, запрошенный аудиоканал, жизненный цикл, остановку и очистку.
Например, при запросе входа Opus устройство может передавать голосовой поток только после авторизации собственного AI-сервиса и сообщения успешного результата. При запросе SCO приложение подготавливает документированный путь SCO-записи. Собственный AI-сервис не меняет сторону, выбирающую аудиоканал.
Реализация с помощью AI
Подключите собственный AI-сервис с помощью AI
Официальный навык описывает только поток устройства AIBuds и границы интеграции. AI-клиент, учетные данные и логика сервиса остаются в приложении.
Прочитайте https://docs-aibuds.github.io/ru/skills/integrate-aibuds-sdk как руководство по границам интеграции AIBuds. Подключите существующий AI-сервис приложения к документированному потоку устройства AIBuds, сохранив AI-клиент, границы учетных данных, архитектуру и поведение продукта. Не заменяйте сервис поставщиком AIBuds AI и не передавайте учетные данные в SDK; через публичный API сообщайте только результат авторизации. Если сведений о собственном сервисе недостаточно, сначала задайте необходимые вопросы.Передача результата авторизации
- Swift
- Objective-C
func selfAIAuthenticationDidFinish(isAuthenticated: Bool) {
guard let serviceAuthAPI = device as? DeviceServiceAuthAPI else { return }
// Report only the result. Authentication is completed by the host app.
serviceAuthAPI.reportSelfAiServiceAuthResult(isAuthenticated) {
reportSucceeded,
error in
guard reportSucceeded else {
print(error?.localizedDescription ?? "Failed to report authorization")
return
}
// A true result allows the device to continue eligible AI flows.
// A false result keeps the device informed that the service is unavailable.
}
}- (void)selfAIAuthenticationDidFinish:(BOOL)isAuthenticated {
if (![self.device conformsToProtocol:@protocol(AIBudsDeviceServiceAuthAPI)]) {
return;
}
id<AIBudsDeviceServiceAuthAPI> serviceAuthAPI = (id<AIBudsDeviceServiceAuthAPI>)self.device;
// Report only the result. Authentication is completed by the host app.
[serviceAuthAPI reportSelfAiServiceAuthResult:isAuthenticated
completion:^(BOOL reportSucceeded, NSError *error) {
if (!reportSucceeded) {
NSLog(@"%@", error.localizedDescription);
return;
}
// A true result allows the device to continue eligible
// AI flows. A false result keeps the device informed
// that the service is unavailable.
}];
}Полный контракт API приведён в reportSelfAiServiceAuthResult и разделе «Передача результата авторизации собственного AI».
:::note Значение completion callback Completion handler сообщает, доставлено ли логическое значение устройству. Он не подтверждает успешную авторизацию AI-сервиса приложением. Не передавайте через этот API токены, ключи API или другие учётные данные. :::
Контрольный список интеграции
- Авторизуйте собственный AI-сервис в приложении.
- Передавайте
trueтолько когда сервис готов к AI-запросам. - Передавайте
falseпосле ошибки авторизации или при недоступности сервиса. - Сохраняйте документированный процесс событий устройства, SCO или Opus, сессии и очистки выбранной AI-функции.
- Храните учётные данные в защищённой интеграции приложения; устройству передавайте только логический результат.