# Operation Timeout Start Audio

**URL:** <https://devforum.zoom.us/t/operation-timeout-start-audio/93350>\
**Category:** Video SDK\
**Created:** [August 14, 2023, 10:44am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350 "2023-08-14T10:44:33Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 14, 2023, 10:44am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/1 "2023-08-14T10:44:33Z")

</div>

This is a continuation of this ticket since it is already closed.

> [@OPERATION\_TIMEOUT on await Stream.startAudio()](https://devforum.zoom.us/t/operation-timeout-on-await-stream-startaudio/89252):
>
> Hi, Can I ask help on this matter please? I always got OPERATION\_TIMEOUT when calling Stream.startAudio(). By the way I am using Zoom Video SDK version 1.7.7 and Google Chrome Version 113.0.5672.127 (Official Build) (64-bit). Here is how I do it: Function to join zoom session meeting: Note: This joinSessionMeeting is triggerred when we click a button from the DOM. async joinSessionMeeting(sessionMeetingID : string) { await this.zoomClient.join( this.currentSession.topic, sessio…

Versions:  
Video SDK: 1.8.5  
Chrome: 115.0.5790.171 (Official Build) (64-bit)  
Ionic: 6.6.1  
Capacitor: 3.5.1  
Vue: 3

As per @vic.yang, suggested to add the `auto-play-audio-failed` event

```auto
this.zoomClient.on("auto-play-audio-failed", async () => {
        console.log('auto play failed, waiting for a user interaction')
}

```

But the console.log in the code block did not appear in the web browser’s console.

I also added a button in order to have a user interaction once the user is connected to the session.

```auto
watchEffect(() => {
  console.log("=== Is Command Channel Ready? ===", callStore.isCommandChannelReady)

  if (callStore.isCommandChannelReady) {
    if (If Statement Here) {
      openModal()
    } else {
      callStore.startAudio()
    }
  }
})

const openModal = async () => {
  const modal = await modalController.create({
    component: MeeingStartAudioConfimationModal, //name of the component to render inside ionic modal
      cssClass: "audio-modal",
  });

  modal.present();
}

```

Modal Vue:

```auto
async function buttonOk() {
    await callStore.zoomStream.startAudio()
      .then(response => console.log("=== audio started ==="))
      .catch(e => console.error("=== Unabled to start audio ===", e))
    modalController.dismiss();
}

```

However we are still experiencing **OPERATION\_TIMEOUT** error  
 ![audio-operation-timeout](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/7/c/7c7bdd1e1c8b6d091ccb7cc84e5831cdc2ebec5c.png)

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 15, 2023, 1:27am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/2 "2023-08-15T01:27:51Z")

</div>

Hey @joss.ygay

Thanks for your feedback.

Is there a microphone permission request popup after starting the audio?

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 15, 2023, 1:47am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/3 "2023-08-15T01:47:50Z")

</div>

Hello @vic.yang

No, there is no permission request popup

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 15, 2023, 2:00am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/4 "2023-08-15T02:00:34Z")

</div>

Hey @joss.ygay

I saw you are using the Ionic framework, did you enable microphone permission when setup the project?

A quick way to test it is by visiting the WebRTC sample project, and testing whether the microphone works.

> **[gUM audio](https://webrtc.github.io/samples/src/content/getusermedia/audio/)**
>
> WebRTC code samples

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 15, 2023, 2:31am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/5 "2023-08-15T02:31:54Z")

</div>

Hello @vic.yang

> I saw you are using the Ionic framework, did you enable microphone permission when setup the project?

You mean this one?  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/f/8/f8240e41815570b982c6e9202d384c75b8d63d9f.png)

> A quick way to test it is by visiting the WebRTC sample project, and testing whether the microphone works.

As I test it, the permission pops up and the mic is working in the WebRTC sample project

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 15, 2023, 4:46am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/6 "2023-08-15T04:46:35Z")

</div>

Hey @joss.ygay

Could you reset the microphone permission and try it again?

And are there any other errors on the console when the issue occurs?

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 15, 2023, 7:18am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/7 "2023-08-15T07:18:14Z")

</div>

Hello @vic.yang

> Could you reset the microphone permission and try it again?

I reset the permission and reload the page. Only **Sound** permission automatically turns on. Also there is no request permission for microphone pops-up  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/0/6013e1394b043b1cb98b4ba2d571e1cb57afcde1.png)

**Clarification:** With Permission or Without Permission, Operation timeout occurs

> And are there any other errors on the console when the issue occurs?

No, only **OPERATION\_TIMEOUT**

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 15, 2023, 8:52am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/9 "2023-08-15T08:52:59Z")

</div>

Additional Info:  
I upgraded the following:  
Ionic Framework: 6.6.1 → 7.2.3  
Capacitor: 3.5.1 → 5.0

**OPERATION\_TIMEOUT** still occurs

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 16, 2023, 3:25am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/10 "2023-08-16T03:25:01Z")

</div>

Hey @joss.ygay

Video SDK web needs to request microphone permission when calling `stream.startAudio` method. If the permission is not granted by the browser or webview, it will lead to timeout error.

I’m not very familiar with Ionic, searched on the internet and found it seems in order to enable WebRTC, it’s required to add some plugins. The following link is a Github example.

> **[GitHub - abhayjaniit/ionic5-webrtc-demo](https://github.com/abhayjaniit/ionic5-webrtc-demo)**
>
> Contribute to abhayjaniit/ionic5-webrtc-demo development by creating an account on GitHub.

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 16, 2023, 3:30am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/11 "2023-08-16T03:30:56Z")

</div>

Hello @vic.yang ,

I will check on this, I will send a feedback once done. Thank you

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 16, 2023, 7:38am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/12 "2023-08-16T07:38:12Z")

</div>

Hello @vic.yang

I studied the github example you provided and tested the plugins in our web app, but the plugins only works on Android and IOS, does not work in Browsers.

Also, Im not sure if this will help. I compared your sample app (react) to our app. I noticed this in the logs.

**Sample App (React)**  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/c/5/c5924d31f53b2f623d43d93d943f57aa0702926d.png)

**Our App**  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/c/f/cf4d97721c17db9b62439ba952c59323c0984eb1.png)

We did not receive the 2nd log from the **js\_media**. My teammate (@redenfloyd.cayanan) confirms that if we have that 2nd log the will audio work.

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 16, 2023, 10:10am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/13 "2023-08-16T10:10:50Z")

</div>

Hey @joss.ygay

Thank you for sharing the info with us.

Can you test whether the current site is a secure context for WebRTC? Use the following statement:

```plaintext
console.log(window.isSecureContext );

```

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 16, 2023, 11:08am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/14 "2023-08-16T11:08:49Z")

</div>

Hello @vic.yang

Thank you for your response.

> Can you test whether the current site is a secure context for WebRTC?

Upon testing, here is the result:

```auto
console.log("=== is Secure Context ===", window.isSecureContext );

```

![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/e/2/e2f85647f8b148aa611e0636c3b8b8b9e2c99b11.png)

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 17, 2023, 1:23am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/15 "2023-08-17T01:23:14Z")

</div>

Hey @joss.ygay

Would you mind enabling client-side telemetry and report the issue to us? It’s very useful for us to investigate the issue.

> **[Video SDK - web - Service quality](https://developers.zoom.us/docs/video-sdk/web/quality/#client-side-telemetry)**
>
> The Zoom Developer Platform is an open platform that allows third-party developers to build applications and integrations upon Zoom’s video-first unified communications platform.

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 17, 2023, 6:02am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/16 "2023-08-17T06:02:29Z")

</div>

Hello @vic.yang ,

Upon checking the document about client-side telemetry. This is what I added in the code

Basic Telemetry

```auto
const oPayload = {
  app_key: this.zoomSDK_KEY,
  tpc: session.topic,
  role_type: role,
  session_key: session.password,
  user_identity: user.fullname,
  iat: iat,
  exp: exp,
  telemetry_tracking_id: "Operation_Timeout_Issue"
};

```

Detailed Telemetry:

```auto
this.clientSideTelemetry = this.zoomClient.getLoggerClient()

await this.client.join(param1, param2, param3, param4)

```

Modal.vue:

```auto
const buttonOk = async () => {
    window.navigator.mediaDevices.getUserMedia({audio: true})

    await callStore.zoomStream.startAudio()
      .then(() => console.log("=== audio started ==="))
      .catch(e => console.error("=== Unabled to start audio ===", e))
      .finally(async () => {
        console.log("=== telemetry ===", callStore.clientSideTelemetry)
        await callStore.clientSideTelemetry.reportToGlobalTracing()
      })
      
    modalController.dismiss();
  }

```

Where can we find the submitted report?

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 17, 2023, 6:18am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/17 "2023-08-17T06:18:15Z")

</div>

Hey @joss.ygay

Thank you for your report.

We can find your report via the `telemetry_tracking_id`, and we will analyze the logs, if there are any findings we will keep you informed.

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 17, 2023, 7:07am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/18 "2023-08-17T07:07:43Z")

</div>

Hey @joss.ygay

How did you import and use Video SDK Web? From npm or from CDN?

> **[Video SDK - web - Get started](https://developers.zoom.us/docs/video-sdk/web/get-started/#install-from-npm)**
>
> The Zoom Developer Platform is an open platform that allows third-party developers to build applications and integrations upon Zoom’s video-first unified communications platform.

Could you test the following statement on the console?

```plaintext
console.log(JsMediaSDK_Instance.version);

```

Thanks  
Vic

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 17, 2023, 7:24am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/19 "2023-08-17T07:24:47Z")

</div>

Hello @vic.yang

> How did you import and use Video SDK Web? From npm or from CDN?

We are using NPM  
**package.json**

```auto
{
...
"@zoom/videosdk": "^1.8.5",
...
}

```

**store.ts**

```auto
import ZoomVideo, {
  CommandChannel,
  LoggerClient,
  Participant,
  Stream,
  VideoClient,
  VideoQuality
} from "@zoom/videosdk";

```

however when initializing client, we are using CDN asset.

```auto
const zmClientInitParams = {
   language: "en-US",
   dependentAssets: `CDN`,
  initOptions: { enforceMultipleVideos: true },
};

```

---

<div class="post-metadata">

**Author:** ![joss.ygay](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/joss.ygay/32/36681_2.png) [@joss.ygay](https://devforum.zoom.us/u/joss.ygay)\
**Post date:** [August 17, 2023, 7:35am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/20 "2023-08-17T07:35:08Z")

</div>

Hello @vic.yang ,

> Could you test the following statement on the console?

```auto
const buttonOk = () => {
    console.log("=== starting audio ===")
    console.log("=== JS Media ===",JsMediaSDK_Instance.version);
  }

```

![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/2/7/2745954e1c907a18de3ba8dc0247292c3ead82a2.png)

---

<div class="post-metadata">

**Author:** ![vic.yang](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vic.yang/32/24656_2.png) [@vic.yang](https://devforum.zoom.us/u/vic.yang)\
**Post date:** [August 17, 2023, 7:50am UTC](https://devforum.zoom.us/t/operation-timeout-start-audio/93350/21 "2023-08-17T07:50:42Z")

</div>

Hey @joss.ygay

Thanks for your info.

Did you wait for the `zmClient.init` method to get resolved before calling the `zmClient.join` method?

```javascript
zmClient.init('en-US','CDN',{
  enforceMultipleVideos: true 
}).then(()=>{
  return zmClient.join('topic','token','name')
}).then(()=>{
  const stream = zmClient.getMediaStream();
// bind the button click handler
  stream.startAudio();
})

```

Thanks  
Vic

[Next page](https://devforum.zoom.us/t/operation-timeout-start-audio/93350.md?page=2)
