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

First one the AudioStartingIntent mentioned in the doc was updated as deprecated and asked to use AudioPlaybackIntent, so we adopted that.

Our goal is to utilize the phone schema so that users can call to our contacts directly from siri, so we have adopted this App intent (phone.startcall) and confirmed required entities. But we are not sure is there are any other conformance and methods need to added to make this intent works properly.

Currently siri able to identify the contact from my app given in this contact entity (.phone.phonePerson) when asking 'Call to {contact}', but the perform method not getting called.

We are using latest xcode 27 beta 4 and iPhone 17 pro with iOS27 beta 4.

Feedback id: FB23955911

Thanks for your post.

You can see the status of your feedback in Feedback Assistant. There, you can track if the report is still being investigated, has a potential identifiable fix, or has been resolved in another way. The status appears beside the label "Resolution." We're unable to share any updates on specific reports on the forums.

For more details on when you'll see updates to your report, please see What to expect after submission.

Albert  WWDR

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