App Intents Phone Schema Domain - .phone.startCall does not invoke perform()

We're implementing the App Intents Phone schema domain in our app to enable Siri to initiate calls to our contact entities via our voip.

We've implemented a .phone.startCall intent and registered our entities as .phone.phonePerson. The intent provides both the required destination and audioVisualMode parameters, and the perform() method is implemented to handle the call.

However, the perform() method is never invoked. Instead, Siri either: Says that the phone number is not linked, or Announces that it is calling, but our app intent is never executed.

Anybody implemented this Phone schema domain and it s working successfully ?

Sample Code:

struct StartCallIntent: AudioRecordingIntent, AudioPlaybackIntent {
var destination: CallDestination
var audioVisualMode: CallAVMode

    init(contact: ContactEntity, mode: CallAVMode = .audio) {
        self.destination = .phonePerson(contact)
        self.audioVisualMode = mode
    }

    func perform() async throws -> some IntentResult {
        print("Call Initiating to contact")
        return .result()
    }

@AppEnum(schema: .phone.audioVisualMode)
enum CallAVMode: String, CaseIterable {
    case audio
    case video
}

@UnionValue
enum CallDestination: Sendable {
    case phonePerson(ContactEntity)
    case group([ContactEntity])
}

@AppEntity(schema: .phone.phonePerson)
struct ContactEntity: IndexedEntity {

    static var defaultQuery = ContactEntityQuery()

    let id: UUID

    var person: IntentPerson
}

Thanks for the post.

I believe there are two issues in the code you posted vs. what shows in the documentation of what schema requires. However I haven't used that intent yet, so maybe is something I need to write some code to see how that AppIntent donations to Apple Intelligence work. So hope any engineers that have experience with that AppIntent can jump into this thread.

https://developer.apple.com/documentation/appintents/appschema/phoneintent/startcall

Please looks at the code in the example for .phone.startCall on the link above

Your code declares:

struct StartCallIntent: AudioRecordingIntent, AudioPlaybackIntent {

AudioPlaybackIntent is not the required protocol — it's AudioStartingIntent?

  • AudioPlaybackIntent for intents that play back existing audio content
  • AudioStartingIntent for intents that begin a live audio session (calls, recordings).

What is your goal and what you are trying to accomplish with that specific AppIntents?

I would recommend to look over this great documentation explaining what you can accomplish in AppIntents https://developer.apple.com/documentation/AppIntents/getting-started-with-the-app-intents-framework

I only looked ash your StartCallIntent for now. But hope this helps.

Also what version of Xcode 27 beta are you using and what device are you using to test?

Albert  WWDR

App Intents Phone Schema Domain - .phone.startCall does not invoke perform()
 
 
Q