Can't receive onMicStartSend event when using local_recording token for authorization. (Linux Meeting SDK)

I’m working on a bot that can send audio to meetings. For that, I set an external audio source and unmute my bot:
Pseudo code:
SDKError err = audioHelper->subscribe(audio_source);

err = audioHelper->setExternalAudioSource(&micEvent);

err = audioController->UnMuteAudio(getUserID());

It all works fine when I’m doing authentication with JWT, and then make bot a host in a meeting.
When I’m using local_recording token for authorization, the bot doesn’t receive onMicStartSend(only onMicInitialize) and remains silent.
But I can see the video from the bot.

Could someone please clarify if there are any kind of access limitations for local_recording token, and whether I can push raw audio and video while using local_recording token?

@abahno ,

are you saying that with a local_recording token, you are not able to send raw audio and raw videio?

@chunsiong.zoom , with local_recording token I can send raw video but not audio.
It seems like a bot stays muted since I don’t get onMicStartSend callback. However, I do call audioController->unMuteAudio(botId).

@anastasiiabahno

here’s some checklist

Before joining a meeting.

		ZOOM_SDK_NAMESPACE::IAudioSettingContext* pAudioContext = m_pSettingService->GetAudioSettings();
		if (pAudioContext)
		{
			//ensure auto join audio
			pAudioContext->EnableAutoJoinAudio(true);
			pAudioContext->EnableAlwaysMuteMicWhenJoinVoip(true);
			pAudioContext->SetSuppressBackgroundNoiseLevel(Suppress_BGNoise_Level_None);

		}

when you are in meeting
DEFAULT_AUDIO_SOURCE is just a path to a wav file.

		ZoomSDKVirtualAudioMicEvent* audio_source = new ZoomSDKVirtualAudioMicEvent(DEFAULT_AUDIO_SOURCE);
		IZoomSDKAudioRawDataHelper* audioHelper = GetAudioRawdataHelper();
		if (audioHelper) {
			SDKError err = audioHelper->setExternalAudioSource(audio_source);
		}

when you want to start sending the raw audio, example from an event or a button click

IUserInfo* getMyself() {
	m_pParticipantsController = m_pMeetingService->GetMeetingParticipantsController();
	IUserInfo* returnvalue = m_pParticipantsController->GetMySelfUser();
	//std::cout << "UserID is : " << returnvalue << std::endl;
	return returnvalue;
}
.
.
.
.

	IMeetingAudioController* meetingAudController = m_pMeetingService->GetMeetingAudioController();
	meetingAudController->JoinVoip();
	printf("Is my audio muted: %d\n", getMyself()->IsAudioMuted());
	meetingAudController->UnMuteAudio(getMyself()->GetUserID());