AI संवाद
Supported डिवाइस द्वारा शुरू AI voice chat session चलाएँ, conversation data और intents पाएँ तथा आवश्यकता होने पर decoded PCM audio active provider session को भेजें।
AIChatEventType समझने के लिए AI Session Events और पहचाने गए actions चलाने से पहले validate करने के लिए AI Intents उपयोग करें।
Device-driven AI संवाद lifecycle
डिवाइस AI chat request करके बताता है कि speech Opus से आएगी या app-side SCO recording से। Final report तक device और AI session states coordinate रखें।
आवश्यक शर्तें
AIBudsAISDKinitialize हो, device information configure हो और registered provider चुना तथा authenticated हो।- Provider
AIChatServiceAPIsupport करता हो। - डिवाइस AI chat session events देता हो और Opus input के लिए
DeviceAIChatAPIको conform करता हो। - Channel को app में स्वतंत्र रूप से चुनने के बजाय device event से पढ़ें।
AI की सहायता से लागू करें
इस वर्कफ़्लो को AI से लागू करें
आधिकारिक “AIBuds AI चैट लागू करें” स्किल से वर्कफ़्लो को अपने ऐप के अनुसार लागू करें।
https://docs-aibuds.github.io/hi/skills/implement-aibuds-ai-chat को पढ़ें और निर्देशों का पालन करें। इस स्किल से “AIBuds AI चैट लागू करें” को इस iOS प्रोजेक्ट में लागू करें और परिणाम सत्यापित करें।API Reference
Framework
AIBudsAI.xcframework
Import
- Swift
- Objective-C
import AIBuds
import AIBudsAI
import AIBudsAIFoundation#import <AIBuds/AIBuds-Swift.h>
#import <AIBudsAI/AIBudsAI-Swift.h>Declaration
- Swift
- Objective-C
/// Starts an AI chat session.
/// - Parameters:
/// - config: The chat session configuration.
/// - onStartSuccess: Called with the active session.
/// - onStartFailure: Called when the session cannot start.
/// - onChatData: Called when new conversational data arrives.
/// - onIntent: Called when the provider detects an intent.
/// - onVoiceData: Called when voice data is produced.
/// - onEvent: Called for session-level events.
/// - onError: Called for runtime session errors.
/// - onFinish: Called with the final session report.
public static func startAIChat(_ config: AIChatSessionConfig = .default,
onStartSuccess: ((_ session: AIChatSessionConvertible) -> Void)? = nil,
onStartFailure: ((_ error: Error) -> Void)? = nil,
onChatData: ((_ chatData: AIChatDataModel) -> Void)? = nil,
onIntent: ((_ intent: AIChatIntentModel) -> Void)? = nil,
onVoiceData: ((_ voiceData: AIChatVoiceDataModel) -> Void)? = nil,
onEvent: ((_ event: AIChatEventModel) -> Void)? = nil,
onError: ((_ error: NSError) -> Void)? = nil,
onFinish: ((_ report: AIChatSessionReportModel) -> Void)? = nil) -> Void
/// Stops the active AI chat session. This is safe when no session is active.
public static func stopAIChat()/// Starts an AI chat session.
/// - Parameters:
/// - config: The chat session configuration.
/// - onStartSuccess: Called with the active session.
/// - onStartFailure: Called when the session cannot start.
/// - onChatData: Called when new conversational data arrives.
/// - onIntent: Called when the provider detects an intent.
/// - onVoiceData: Called when voice data is produced.
/// - onEvent: Called for session-level events.
/// - onError: Called for runtime session errors.
/// - onFinish: Called with the final session report.
+ (void)startAIChatWithConfig:(AIBudsAIChatSessionConfig * _Nonnull)config
onStartSuccess:(void (^ _Nullable)(id <AIBudsAIChatSessionConvertible> _Nonnull))onStartSuccess
onStartFailure:(void (^ _Nullable)(NSError * _Nonnull))onStartFailure
onChatData:(void (^ _Nullable)(AIBudsAIChatDataModel * _Nonnull))onChatData
onIntent:(void (^ _Nullable)(AIBudsAIChatIntentModel * _Nonnull))onIntent
onVoiceData:(void (^ _Nullable)(AIBudsAIChatVoiceDataModel * _Nonnull))onVoiceData
onEvent:(void (^ _Nullable)(AIBudsAIChatEventModel * _Nonnull))onEvent
onError:(void (^ _Nullable)(NSError * _Nonnull))onError
onFinish:(void (^ _Nullable)(AIBudsAIChatSessionReportModel * _Nonnull))onFinish;
/// Stops the active AI chat session. This is safe when no session is active.
+ (void)stopAIChat;startAIChat और stopAIChat देखें।
कॉन्फ़िगरेशन
AIChatSessionConfig वे settings देता है जिन्हें AIChatSettingsController उपयोग करता है:
| प्रॉपर्टी | Default | उद्देश्य |
|---|---|---|
languageForSpeechInput | App language | चुने गए provider की supported hyphenated speech-input language, जैसे zh-CN। |
audioChannel | .opusInA2dpOut | Chat session का audio transport। यह session शुरू करने वाले device event से मेल खाना चाहिए। |
allowUserToInterruptAIResponse | true | User input AI response, आमतौर पर voice playback, को रोक सकता है या नहीं। |
maxPauseDurationBeforeAIResponds | 0.8 सेकंड | AI के उत्तर से पहले अनुमत अधिकतम speech pause। |
autoEndSessionAfterNoInputDuration | 15.0 सेकंड | Session अपने आप समाप्त होने से पहले idle अवधि। |
enableVoicePlayback | true | Generated voice playback चालू है या नहीं। |
shouldSaveVoiceForDebugging | false | Diagnostic voice data रखा जाए या नहीं। Policy स्पष्ट अनुमति न दे तो production में बंद रखें। |
additionalOptions | [:] | Provider-specific agent, speaker, plan, prompt, intent या denoising options। |
autoSelectAgentIfNotSpecified | true | Provider-specific agent न देने पर SDK agent चुनता है या नहीं। |
Hard-coded provider option keys के बजाय public AdditionalOptionKey... constants उपयोग करें।
Chat Session कॉन्फ़िगर करें
Demo provider selection को session configuration से अलग रखता है। Provider बदलने पर पहले उसे चुनें, supported languages पूछें और chat शुरू करने से पहले app-initiated authentication पूरा करें। Agent IDs, speaker IDs, intent codes, usage plans और initial prompts provider देता है; इन्हें Demo से universal values मानकर copy न करें।
- Swift
- Objective-C
let vendor: AIServiceVendor = .starBurst
AIBudsAISDK.setAIServiceVendor(vendor)
let supportedLanguages = AIBudsAISDK.allSupportedLanguages(for: vendor)
let language = supportedLanguages.first?.languageCode
var options: [String: Any] = [:]
if let agentID = providerAgentID {
options[AIChatSessionConfig.AdditionalOptionKeyStarburstAgentId] = agentID
}
if let speakerID = providerSpeakerID {
options[AIChatSessionConfig.AdditionalOptionKeyStarburstSpeakerId] = speakerID
}
let config = AIChatSessionConfig(
languageForSpeechInput: language,
audioChannel: .opusInA2dpOut,
allowUserToInterruptAIResponse: true,
maxPauseDurationBeforeAIResponds: 0.8,
autoEndSessionAfterNoInputDuration: 15,
enableVoicePlayback: true,
shouldSaveVoiceForDebugging: false,
additionalOptions: options
)
config.autoSelectAgentIfNotSpecified = providerAgentID == nilAIBudsAIServiceVendor vendor = AIBudsAIServiceVendorStarBurst;
[AIBudsAISDK setAIServiceVendor:vendor];
NSArray<AIBudsAIServiceLanguage *> *supportedLanguages =
[AIBudsAISDK allSupportedLanguagesForVendor:vendor];
NSString *language = supportedLanguages.firstObject.languageCode;
NSMutableDictionary<NSString *, id> *options = [NSMutableDictionary dictionary];
if (self.providerAgentID.length > 0) {
options[AIBudsAIChatSessionConfig.AdditionalOptionKeyStarburstAgentId] = self.providerAgentID;
}
if (self.providerSpeakerID.length > 0) {
options[AIBudsAIChatSessionConfig.AdditionalOptionKeyStarburstSpeakerId] =
self.providerSpeakerID;
}
AIBudsAIChatSessionConfig *config = [[AIBudsAIChatSessionConfig alloc]
initWithLanguageForSpeechInput:language
audioChannel:AIBudsAIChatAudioChannelOpusInA2dpOut
allowUserToInterruptAIResponse:YES
maxPauseDurationBeforeAIResponds:0.8
autoEndSessionAfterNoInputDuration:15.0
enableVoicePlayback:YES
shouldSaveVoiceForDebugging:NO
additionalOptions:options];
config.autoSelectAgentIfNotSpecified = self.providerAgentID.length == 0;.mltcloud के लिए संबंधित AdditionalOptionKeyMltCloud... constants उपयोग करें। StarBurst usage plan या provider-specific identifier केवल तब set करें जब provider configuration मान्य value दे।
उपयोग के उदाहरण
डिवाइस सामान्यतः .initiateWithSCO या .initiateWithOpus से chat शुरू करता है। AI chat शुरू करने से पहले requested channel session configuration में copy करें। Opus में डिवाइस से मिला decoded PCM forward करें। SCO में .sco session शुरू करने पर device microphone के लिए app-side SCO recording बनती है।
- Swift
- Objective-C
let config = AIChatSessionConfig.default
config.audioChannel = .opusInA2dpOut
config.languageForSpeechInput = "en-US"
AIBudsAISDK.startAIChat(
config,
onStartSuccess: { session in
currentSession = session
},
onStartFailure: { error in
print("Chat start failed: \(error)")
},
onChatData: { chatData in
conversation.append(chatData)
},
onIntent: { intent in
handle(intent)
},
onVoiceData: { voiceData in
handle(voiceData)
},
onEvent: { event in
handle(event)
},
onError: { error in
print(error.localizedDescription)
},
onFinish: { report in
currentSession = nil
save(report)
}
)डिवाइस Opus chat session के लिए decoded 16-bit PCM दे तो उसे retained session को भेजें:currentSession?.appendInt16PCM?(decodedPCMData)
AIBudsAIChatSessionConfig *config = [AIBudsAIChatSessionConfig defaultConfig];
config.audioChannel = AIBudsAIChatAudioChannelOpusInA2dpOut;
config.languageForSpeechInput = @"en-US";
[AIBudsAISDK startAIChatWithConfig:config
onStartSuccess:^(id<AIBudsAIChatSessionConvertible> session) {
self.currentSession = session;
}
onStartFailure:^(NSError *error) {
NSLog(@"Chat start failed: %@", error);
}
onChatData:^(AIBudsAIChatDataModel *chatData) {
[self recordChatData:chatData];
}
onIntent:^(AIBudsAIChatIntentModel *intent) {
[self handleIntent:intent];
}
onVoiceData:^(AIBudsAIChatVoiceDataModel *voiceData) {
[self handleVoiceData:voiceData];
}
onEvent:^(AIBudsAIChatEventModel *event) {
[self handleEvent:event];
}
onError:^(NSError *error) {
NSLog(@"%@", error.localizedDescription);
}
onFinish:^(AIBudsAIChatSessionReportModel *report) {
self.currentSession = nil;
[self saveReport:report];
}];आवश्यक होने पर decoded PCM forward करें:[self.currentSession appendInt16PCM:decodedPCMData];
Session रोकें
डिवाइस termination मांगे तो device flow की आवश्यकता के अनुसार DeviceAIChatAPI से stopped state report करें, फिर call करें:
- Swift
- Objective-C
AIBudsAISDK.stopAIChat()
currentSession = nil[AIBudsAISDK stopAIChat];
self.currentSession = nil;ध्यान देने योग्य बातें
- यह audio-session API है, text
sendMessage/ message-history API नहीं। AIChatSessionConvertibleकोonFinish, unrecoverable error या explicit stop तक बनाए रखें।- SCO sessions में AIBuds AI SDK app के SCO link से device microphone record करता है। Opus sessions में डिवाइस app को Opus भेजता है; decoded PCM को
appendInt16PCM(_:)से forward करें। - Privacy और retention policies स्पष्ट अनुमति न दें तो production में
shouldSaveVoiceForDebuggingचालू न करें।