Setting the file. One moment.
Skill 121 · Build Zoom Meeting SDK App
Subchapter 121.1
references/ai-companion.mdMarkdown6 KBView on GitHub
The Meeting SDK provides InMeetingAICompanionController to manage AI Companion features within meetings. This allows you to check status and available features.
Important: The Meeting SDK is for human use cases only. It does NOT support bots or AI notetakers. For bot/automated AI processing, use rtms.
| Platform | Controller Available |
|---|---|
| Web | Limited (settings-based) |
| Android | ✅ InMeetingAICompanionController |
| iOS | ✅ MobileRTCAICompanionController |
| Windows | ✅ IMeetingAICompanionController |
| macOS | ✅ ZoomSDKMeetingAICompanionController |
| Feature | Constant | Description |
|---|---|---|
| Query | QUERY | Ask AI Companion questions during meeting |
| Smart Summary | SMART_SUMMARY | Auto-generate meeting summary |
| Smart Recording | SMART_RECORDING | Highlight key moments in recording |
import us.zoom.sdk.*;
// Get AI Companion controller
InMeetingService inMeetingService = ZoomSDK.getInstance().getInMeetingService();
InMeetingAICompanionController aiController = inMeetingService.getInMeetingAICompanionController();
// Check if AI Companion is enabled for this meeting
boolean isEnabled = aiController.isAICompanionEnabled();
Log.d("AICompanion", "Enabled: " + isEnabled);
// Get available features
List<AICompanionFeature> features = aiController.getAvailableFeatures();
for (AICompanionFeature feature : features) {
Log.d("AICompanion", "Feature available: " + feature.name());
}
// Check specific feature
boolean hasSummary = aiController.isFeatureAvailable(AICompanionFeature.SMART_SUMMARY);// Listen for AI Companion status changes
inMeetingService.addListener(new InMeetingServiceListener() {
@Override
public void onAICompanionActiveChanged(boolean isActive) {
Log.d("AICompanion", "Active state changed: " + isActive);
}
@Override
public void onAICompanionFeaturesChanged() {
// Re-check available features
List<AICompanionFeature> features = aiController.getAvailableFeatures();
}
});import MobileRTC
// Get AI Companion controller
guard let meetingService = MobileRTC.shared().getMeetingService(),
let aiController = meetingService.getInMeetingAICompanionController() else {
return
}
// Check if AI Companion is enabled
let isEnabled = aiController.isAICompanionEnabled()
print("AI Companion enabled: \(isEnabled)")
// Get available features
if let features = aiController.getAvailableFeatures() as? [MobileRTCAICompanionFeature] {
for feature in features {
print("Feature: \(feature.rawValue)")
}
}
// Check specific feature
let hasSummary = aiController.isFeatureAvailable(.smartSummary)// Implement delegate
class MeetingDelegate: NSObject, MobileRTCMeetingServiceDelegate {
func onAICompanionActiveChanged(_ isActive: Bool) {
print("AI Companion active: \(isActive)")
}
func onAICompanionFeaturesChanged() {
// Refresh available features
}
}#include "zoom_sdk.h"
// Get AI Companion controller
IMeetingService* meetingService = SDKInterfaceWrap::GetInst().GetMeetingService();
IMeetingAICompanionController* aiController = meetingService->GetMeetingAICompanionController();
// Check status
bool isEnabled = aiController->IsAICompanionEnabled();
// Get features
IList<AICompanionFeature>* features = aiController->GetAvailableFeatures();
for (int i = 0; i < features->GetCount(); i++) {
AICompanionFeature feature = features->GetItem(i);
// Process feature
}#import <ZoomSDK/ZoomSDK.h>
// Get AI Companion controller
ZoomSDKMeetingService *meetingService = [[ZoomSDK sharedSDK] getMeetingService];
ZoomSDKMeetingAICompanionController *aiController = [meetingService getAICompanionController];
// Check status
BOOL isEnabled = [aiController isAICompanionEnabled];
NSLog(@"AI Companion enabled: %d", isEnabled);
// Get features
NSArray *features = [aiController getAvailableFeatures];
for (NSNumber *feature in features) {
NSLog(@"Feature: %@", feature);
}The Web SDK doesn’t expose direct AI Companion controls. AI Companion behavior is determined by:
// AI Companion features are controlled by meeting/account settings
// The Web SDK respects these settings automatically
// You can check meeting info for AI-related settings
ZoomMtg.getCurrentMeetingInfo(function(result) {
console.log('Meeting info:', result);
});// Android: Show UI indicator based on AI Companion status
public void updateAICompanionUI() {
InMeetingAICompanionController aiController = getAIController();
if (aiController.isAICompanionEnabled()) {
aiIndicator.setVisibility(View.VISIBLE);
if (aiController.isFeatureAvailable(AICompanionFeature.SMART_SUMMARY)) {
summaryBadge.setVisibility(View.VISIBLE);
}
} else {
aiIndicator.setVisibility(View.GONE);
}
}// iOS: Show alert about AI features
func showAICompanionInfo() {
guard let aiController = getAIController() else { return }
var features: [String] = []
if aiController.isFeatureAvailable(.smartSummary) {
features.append("Meeting Summary")
}
if aiController.isFeatureAvailable(.smartRecording) {
features.append("Smart Recording")
}
if !features.isEmpty {
let message = "AI Companion features active: \(features.joined(separator: ", "))"
showAlert(title: "AI Companion", message: message)
}
}| Limitation | Notes |
|---|---|
| No bot support | Meeting SDK is for human use only |
| Read-only | Cannot enable/disable features via SDK |
| Settings-dependent | Features depend on account/meeting settings |
| No transcript access | Use REST API or RTMS for transcripts |