[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EXGCEK541XFPJ3YYY9JQNQ":3,"skill-same:01M6EXGCEK541XFPJ3YYY9JQNQ":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6EXGCEK541XFPJ3YYY9JQNQ","azure-communication-callautomation-java",null,"Build call automation workflows with Azure Communication Services Call Automation Java SDK. Use when implementing IVR systems, call routing, call recording, DTMF recognition, text-to-speech, or AI-powered call flows.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-communication-callautomation-java\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"azure","azure communication callautomation java","communication","java","text","with","flows","recognition","azure communication services","automation workflows","systems","call","build","use","sdk","services","speech","routing","workflows","automation","2026-11-10 10:12:30",false,"---\nname: azure-communication-callautomation-java\ndescription: Build call automation workflows with Azure Communication Services Call Automation Java SDK. Use when implementing IVR systems, call routing, call recording, DTMF recognition, text-to-speech, or AI-powered call flows.\npackage: com.azure:azure-communication-callautomation\n---\n\n# Azure Communication Call Automation (Java)\n\nBuild server-side call automation workflows including IVR systems, call routing, recording, and AI-powered interactions.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-communication-callautomation\u003C\u002FartifactId>\n    \u003Cversion>1.6.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Client Creation\n\n```java\nimport com.azure.communication.callautomation.CallAutomationClient;\nimport com.azure.communication.callautomation.CallAutomationClientBuilder;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\n\u002F\u002F With DefaultAzureCredential\nCallAutomationClient client = new CallAutomationClientBuilder()\n    .endpoint(\"https:\u002F\u002F\u003Cresource>.communication.azure.com\")\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .buildClient();\n\n\u002F\u002F With connection string\nCallAutomationClient client = new CallAutomationClientBuilder()\n    .connectionString(\"\u003Cconnection-string>\")\n    .buildClient();\n```\n\n## Key Concepts\n\n| Class | Purpose |\n|-------|---------|\n| `CallAutomationClient` | Make calls, answer\u002Freject incoming calls, redirect calls |\n| `CallConnection` | Actions in established calls (add participants, terminate) |\n| `CallMedia` | Media operations (play audio, recognize DTMF\u002Fspeech) |\n| `CallRecording` | Start\u002Fstop\u002Fpause recording |\n| `CallAutomationEventParser` | Parse webhook events from ACS |\n\n## Create Outbound Call\n\n```java\nimport com.azure.communication.callautomation.models.*;\nimport com.azure.communication.common.CommunicationUserIdentifier;\nimport com.azure.communication.common.PhoneNumberIdentifier;\n\n\u002F\u002F Call to PSTN number\nPhoneNumberIdentifier target = new PhoneNumberIdentifier(\"+14255551234\");\nPhoneNumberIdentifier caller = new PhoneNumberIdentifier(\"+14255550100\");\n\nCreateCallOptions options = new CreateCallOptions(\n    new CommunicationUserIdentifier(\"\u003Cuser-id>\"),  \u002F\u002F Source\n    List.of(target))                                \u002F\u002F Targets\n    .setSourceCallerId(caller)\n    .setCallbackUrl(\"https:\u002F\u002Fyour-app.com\u002Fapi\u002Fcallbacks\");\n\nCreateCallResult result = client.createCall(options);\nString callConnectionId = result.getCallConnectionProperties().getCallConnectionId();\n```\n\n## Answer Incoming Call\n\n```java\n\u002F\u002F From Event Grid webhook - IncomingCall event\nString incomingCallContext = \"\u003Cincoming-call-context-from-event>\";\n\nAnswerCallOptions options = new AnswerCallOptions(\n    incomingCallContext,\n    \"https:\u002F\u002Fyour-app.com\u002Fapi\u002Fcallbacks\");\n\nAnswerCallResult result = client.answerCall(options);\nCallConnection callConnection = result.getCallConnection();\n```\n\n## Play Audio (Text-to-Speech)\n\n```java\nCallConnection callConnection = client.getCallConnection(callConnectionId);\nCallMedia callMedia = callConnection.getCallMedia();\n\n\u002F\u002F Play text-to-speech\nTextSource textSource = new TextSource()\n    .setText(\"Welcome to Contoso. Press 1 for sales, 2 for support.\")\n    .setVoiceName(\"en-US-JennyNeural\");\n\nPlayOptions playOptions = new PlayOptions(\n    List.of(textSource),\n    List.of(new CommunicationUserIdentifier(\"\u003Ctarget-user>\")));\n\ncallMedia.play(playOptions);\n\n\u002F\u002F Play audio file\nFileSource fileSource = new FileSource()\n    .setUrl(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Faudio\u002Fgreeting.wav\");\n\ncallMedia.play(new PlayOptions(List.of(fileSource), List.of(target)));\n```\n\n## Recognize DTMF Input\n\n```java\n\u002F\u002F Recognize DTMF tones\nDtmfTone stopTones = DtmfTone.POUND;\n\nCallMediaRecognizeDtmfOptions recognizeOptions = new CallMediaRecognizeDtmfOptions(\n    new CommunicationUserIdentifier(\"\u003Ctarget-user>\"),\n    5)  \u002F\u002F Max tones to collect\n    .setInterToneTimeout(Duration.ofSeconds(5))\n    .setStopTones(List.of(stopTones))\n    .setInitialSilenceTimeout(Duration.ofSeconds(15))\n    .setPlayPrompt(new TextSource().setText(\"Enter your account number followed by pound.\"));\n\ncallMedia.startRecognizing(recognizeOptions);\n```\n\n## Recognize Speech\n\n```java\n\u002F\u002F Speech recognition with AI\nCallMediaRecognizeSpeechOptions speechOptions = new CallMediaRecognizeSpeechOptions(\n    new CommunicationUserIdentifier(\"\u003Ctarget-user>\"))\n    .setEndSilenceTimeout(Duration.ofSeconds(2))\n    .setSpeechLanguage(\"en-US\")\n    .setPlayPrompt(new TextSource().setText(\"How can I help you today?\"));\n\ncallMedia.startRecognizing(speechOptions);\n```\n\n## Call Recording\n\n```java\nCallRecording callRecording = client.getCallRecording();\n\n\u002F\u002F Start recording\nStartRecordingOptions recordingOptions = new StartRecordingOptions(\n    new ServerCallLocator(\"\u003Cserver-call-id>\"))\n    .setRecordingChannel(RecordingChannel.MIXED)\n    .setRecordingContent(RecordingContent.AUDIO_VIDEO)\n    .setRecordingFormat(RecordingFormat.MP4);\n\nRecordingStateResult recordingResult = callRecording.start(recordingOptions);\nString recordingId = recordingResult.getRecordingId();\n\n\u002F\u002F Pause\u002Fresume\u002Fstop\ncallRecording.pause(recordingId);\ncallRecording.resume(recordingId);\ncallRecording.stop(recordingId);\n\n\u002F\u002F Download recording (after RecordingFileStatusUpdated event)\ncallRecording.downloadTo(recordingUrl, Paths.get(\"recording.mp4\"));\n```\n\n## Add Participant to Call\n\n```java\nCallConnection callConnection = client.getCallConnection(callConnectionId);\n\nCommunicationUserIdentifier participant = new CommunicationUserIdentifier(\"\u003Cuser-id>\");\nAddParticipantOptions addOptions = new AddParticipantOptions(participant)\n    .setInvitationTimeout(Duration.ofSeconds(30));\n\nAddParticipantResult result = callConnection.addParticipant(addOptions);\n```\n\n## Transfer Call\n\n```java\n\u002F\u002F Blind transfer\nPhoneNumberIdentifier transferTarget = new PhoneNumberIdentifier(\"+14255559999\");\nTransferCallToParticipantResult result = callConnection.transferCallToParticipant(transferTarget);\n```\n\n## Handle Events (Webhook)\n\n```java\nimport com.azure.communication.callautomation.CallAutomationEventParser;\nimport com.azure.communication.callautomation.models.events.*;\n\n\u002F\u002F In your webhook endpoint\npublic void handleCallback(String requestBody) {\n    List\u003CCallAutomationEventBase> events = CallAutomationEventParser.parseEvents(requestBody);\n    \n    for (CallAutomationEventBase event : events) {\n        if (event instanceof CallConnected) {\n            CallConnected connected = (CallConnected) event;\n            System.out.println(\"Call connected: \" + connected.getCallConnectionId());\n        } else if (event instanceof RecognizeCompleted) {\n            RecognizeCompleted recognized = (RecognizeCompleted) event;\n            \u002F\u002F Handle DTMF or speech recognition result\n            DtmfResult dtmfResult = (DtmfResult) recognized.getRecognizeResult();\n            String tones = dtmfResult.getTones().stream()\n                .map(DtmfTone::toString)\n                .collect(Collectors.joining());\n            System.out.println(\"DTMF received: \" + tones);\n        } else if (event instanceof PlayCompleted) {\n            System.out.println(\"Audio playback completed\");\n        } else if (event instanceof CallDisconnected) {\n            System.out.println(\"Call ended\");\n        }\n    }\n}\n```\n\n## Hang Up Call\n\n```java\n\u002F\u002F Hang up for all participants\ncallConnection.hangUp(true);\n\n\u002F\u002F Hang up only this leg\ncallConnection.hangUp(false);\n```\n\n## Error Handling\n\n```java\nimport com.azure.core.exception.HttpResponseException;\n\ntry {\n    client.answerCall(options);\n} catch (HttpResponseException e) {\n    if (e.getResponse().getStatusCode() == 404) {\n        System.out.println(\"Call not found or already ended\");\n    } else if (e.getResponse().getStatusCode() == 400) {\n        System.out.println(\"Invalid request: \" + e.getMessage());\n    }\n}\n```\n\n## Environment Variables\n\n```bash\nAZURE_COMMUNICATION_ENDPOINT=https:\u002F\u002F\u003Cresource>.communication.azure.com\nAZURE_COMMUNICATION_CONNECTION_STRING=endpoint=https:\u002F\u002F...;accesskey=...\nCALLBACK_BASE_URL=https:\u002F\u002Fyour-app.com\u002Fapi\u002Fcallbacks\n```\n\n## Trigger Phrases\n\n- \"call automation Java\", \"IVR Java\", \"interactive voice response\"\n- \"call recording Java\", \"DTMF recognition Java\"\n- \"text to speech call\", \"speech recognition call\"\n- \"answer incoming call\", \"transfer call Java\"\n- \"Azure Communication Services call automation\"\n","# Azure Communication Call Automation (Java)\n\nBuild server-side call automation workflows including IVR systems, call routing, recording, and AI-powered interactions.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-communication-callautomation\u003C\u002FartifactId>\n    \u003Cversion>1.6.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Client Creation\n\n```java\nimport com.azure.communication.callautomation.CallAutomationClient;\nimport com.azure.communication.callautomation.CallAutomationClientBuilder;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\n\u002F\u002F With DefaultAzureCredential\nCallAutomationClient client = new CallAutomationClientBuilder()\n    .endpoint(\"https:\u002F\u002F\u003Cresource>.communication.azure.com\")\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .buildClient();\n\n\u002F\u002F With connection string\nCallAutomationClient client = new CallAutomationClientBuilder()\n    .connectionString(\"\u003Cconnection-string>\")\n    .buildClient();\n```\n\n## Key Concepts\n\n| Class | Purpose |\n|-------|---------|\n| `CallAutomationClient` | Make calls, answer\u002Freject incoming calls, redirect calls |\n| `CallConnection` | Actions in established calls (add participants, terminate) |\n| `CallMedia` | Media operations (play audio, recognize DTMF\u002Fspeech) |\n| `CallRecording` | Start\u002Fstop\u002Fpause recording |\n| `CallAutomationEventParser` | Parse webhook events from ACS |\n\n## Create Outbound Call\n\n```java\nimport com.azure.communication.callautomation.models.*;\nimport com.azure.communication.common.CommunicationUserIdentifier;\nimport com.azure.communication.common.PhoneNumberIdentifier;\n\n\u002F\u002F Call to PSTN number\nPhoneNumberIdentifier target = new PhoneNumberIdentifier(\"+14255551234\");\nPhoneNumberIdentifier caller = new PhoneNumberIdentifier(\"+14255550100\");\n\nCreateCallOptions options = new CreateCallOptions(\n    new CommunicationUserIdentifier(\"\u003Cuser-id>\"),  \u002F\u002F Source\n    List.of(target))                                \u002F\u002F Targets\n    .setSourceCallerId(caller)\n    .setCallbackUrl(\"https:\u002F\u002Fyour-app.com\u002Fapi\u002Fcallbacks\");\n\nCreateCallResult result = client.createCall(options);\nString callConnectionId = result.getCallConnectionProperties().getCallConnectionId();\n```\n\n## Answer Incoming Call\n\n```java\n\u002F\u002F From Event Grid webhook - IncomingCall event\nString incomingCallContext = \"\u003Cincoming-call-context-from-event>\";\n\nAnswerCallOptions options = new AnswerCallOptions(\n    incomingCallContext,\n    \"https:\u002F\u002Fyour-app.com\u002Fapi\u002Fcallbacks\");\n\nAnswerCallResult result = client.answerCall(options);\nCallConnection callConnection = result.getCallConnection();\n```\n\n## Play Audio (Text-to-Speech)\n\n```java\nCallConnection callConnection = client.getCallConnection(callConnectionId);\nCallMedia callMedia = callConnection.getCallMedia();\n\n\u002F\u002F Play text-to-speech\nTextSource textSource = new TextSource()\n    .setText(\"Welcome to Contoso. Press 1 for sales, 2 for support.\")\n    .setVoiceName(\"en-US-JennyNeural\");\n\nPlayOptions playOptions = new PlayOptions(\n    List.of(textSource),\n    List.of(new CommunicationUserIdentifier(\"\u003Ctarget-user>\")));\n\ncallMedia.play(playOptions);\n\n\u002F\u002F Play audio file\nFileSource fileSource = new FileSource()\n    .setUrl(\"https:\u002F\u002Fstorage.blob.core.windows.net\u002Faudio\u002Fgreeting.wav\");\n\ncallMedia.play(new PlayOptions(List.of(fileSource), List.of(target)));\n```\n\n## Recognize DTMF Input\n\n```java\n\u002F\u002F Recognize DTMF tones\nDtmfTone stopTones = DtmfTone.POUND;\n\nCallMediaRecognizeDtmfOptions recognizeOptions = new CallMediaRecognizeDtmfOptions(\n    new CommunicationUserIdentifier(\"\u003Ctarget-user>\"),\n    5)  \u002F\u002F Max tones to collect\n    .setInterToneTimeout(Duration.ofSeconds(5))\n    .setStopTones(List.of(stopTones))\n    .setInitialSilenceTimeout(Duration.ofSeconds(15))\n    .setPlayPrompt(new TextSource().setText(\"Enter your account number followed by pound.\"));\n\ncallMedia.startRecognizing(recognizeOptions);\n```\n\n## Recognize Speech\n\n```java\n\u002F\u002F Speech recognition with AI\nCallMediaRecognizeSpeechOptions speechOptions = new CallMediaRecognizeSpeechOptions(\n    new CommunicationUserIdentifier(\"\u003Ctarget-user>\"))\n    .setEndSilenceTimeout(Duration.ofSeconds(2))\n    .setSpeechLanguage(\"en-US\")\n    .setPlayPrompt(new TextSource().setText(\"How can I help you today?\"));\n\ncallMedia.startRecognizing(speechOptions);\n```\n\n## Call Recording\n\n```java\nCallRecording callRecording = client.getCallRecording();\n\n\u002F\u002F Start recording\nStartRecordingOptions recordingOptions = new StartRecordingOptions(\n    new ServerCallLocator(\"\u003Cserver-call-id>\"))\n    .setRecordingChannel(RecordingChannel.MIXED)\n    .setRecordingContent(RecordingContent.AUDIO_VIDEO)\n    .setRecordingFormat(RecordingFormat.MP4);\n\nRecordingStateResult recordingResult = callRecording.start(recordingOptions);\nString recordingId = recordingResult.getRecordingId();\n\n\u002F\u002F Pause\u002Fresume\u002Fstop\ncallRecording.pause(recordingId);\ncallRecording.resume(recordingId);\ncallRecording.stop(recordingId);\n\n\u002F\u002F Download recording (after RecordingFileStatusUpdated event)\ncallRecording.downloadTo(recordingUrl, Paths.get(\"recording.mp4\"));\n```\n\n## Add Participant to Call\n\n```java\nCallConnection callConnection = client.getCallConnection(callConnectionId);\n\nCommunicationUserIdentifier participant = new CommunicationUserIdentifier(\"\u003Cuser-id>\");\nAddParticipantOptions addOptions = new AddParticipantOptions(participant)\n    .setInvitationTimeout(Duration.ofSeconds(30));\n\nAddParticipantResult result = callConnection.addParticipant(addOptions);\n```\n\n## Transfer Call\n\n```java\n\u002F\u002F Blind transfer\nPhoneNumberIdentifier transferTarget = new PhoneNumberIdentifier(\"+14255559999\");\nTransferCallToParticipantResult result = callConnection.transferCallToParticipant(transferTarget);\n```\n\n## Handle Events (Webhook)\n\n```java\nimport com.azure.communication.callautomation.CallAutomationEventParser;\nimport com.azure.communication.callautomation.models.events.*;\n\n\u002F\u002F In your webhook endpoint\npublic void handleCallback(String requestBody) {\n    List\u003CCallAutomationEventBase> events = CallAutomationEventParser.parseEvents(requestBody);\n    \n    for (CallAutomationEventBase event : events) {\n        if (event instanceof CallConnected) {\n            CallConnected connected = (CallConnected) event;\n            System.out.println(\"Call connected: \" + connected.getCallConnectionId());\n        } else if (event instanceof RecognizeCompleted) {\n            RecognizeCompleted recognized = (RecognizeCompleted) event;\n            \u002F\u002F Handle DTMF or speech recognition result\n            DtmfResult dtmfResult = (DtmfResult) recognized.getRecognizeResult();\n            String tones = dtmfResult.getTones().stream()\n                .map(DtmfTone::toString)\n                .collect(Collectors.joining());\n            System.out.println(\"DTMF received: \" + tones);\n        } else if (event instanceof PlayCompleted) {\n            System.out.println(\"Audio playback completed\");\n        } else if (event instanceof CallDisconnected) {\n            System.out.println(\"Call ended\");\n        }\n    }\n}\n```\n\n## Hang Up Call\n\n```java\n\u002F\u002F Hang up for all participants\ncallConnection.hangUp(true);\n\n\u002F\u002F Hang up only this leg\ncallConnection.hangUp(false);\n```\n\n## Error Handling\n\n```java\nimport com.azure.core.exception.HttpResponseException;\n\ntry {\n    client.answerCall(options);\n} catch (HttpResponseException e) {\n    if (e.getResponse().getStatusCode() == 404) {\n        System.out.println(\"Call not found or already ended\");\n    } else if (e.getResponse().getStatusCode() == 400) {\n        System.out.println(\"Invalid request: \" + e.getMessage());\n    }\n}\n```\n\n## Environment Variables\n\n```bash\nAZURE_COMMUNICATION_ENDPOINT=https:\u002F\u002F\u003Cresource>.communication.azure.com\nAZURE_COMMUNICATION_CONNECTION_STRING=endpoint=https:\u002F\u002F...;accesskey=...\nCALLBACK_BASE_URL=https:\u002F\u002Fyour-app.com\u002Fapi\u002Fcallbacks\n```\n\n## Trigger Phrases\n\n- \"call automation Java\", \"IVR Java\", \"interactive voice response\"\n- \"call recording Java\", \"DTMF recognition Java\"\n- \"text to speech call\", \"speech recognition call\"\n- \"answer incoming call\", \"transfer call Java\"\n- \"Azure Communication Services call automation\"\n",{"name":5,"package":49,"description":7},"com.azure:azure-communication-callautomation","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-communication-callautomation-java",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill azure-communication-callautomation-java",{"tool":65,"command":66},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill azure-communication-callautomation-java",{"tool":68,"command":69},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill azure-communication-callautomation-java","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-communication-callautomation-java\u002FSKILL.md",true,[73],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"skill-report.json","REFERENCE","参考文档",8353,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-communication-callautomation-java\u002Fskill-report.json",[80,90,100,108,114,121],{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":86,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[85],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[87,88,89],"model","model hierarchy","model hierarchy skill",{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[95],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,98,99],"MCP","zoom","zoom mcp",{"skillNo":101,"name":102,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[38,106,107,98],"zoom apps sdk","apps",{"skillNo":109,"name":110,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[110],{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[119],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[116],{"skillNo":122,"name":123,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[123]]