Getting "OTHER_ERROR" when schedule a meeting

Description
I logged in successfully using email or password. When i schedule a meeting then I’m getting “OTHER_ERROR” in response.

Which version?
v5.0.24437.0708

To Reproduce(If applicable)
Steps to reproduce the behavior:

class MainActivity : AppCompatActivity(), ZoomSDKInitializeListener, ZoomSDKAuthenticationListener, PreMeetingServiceListener {

private var mPreMeetingService: PreMeetingService? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    initSdk()
}

private fun initSdk() {
    val initParams = ZoomSDKInitParams().apply {
        appKey = Credentials.ZOOM_SDK_KEY
        appSecret = Credentials.ZOOM_SDK_SECRET
        domain = Credentials.ZOOM_SDK_DOMAIN
    }
    ZoomSDK.getInstance().initialize(this, this, initParams)
    ZoomSDK.getInstance().addAuthenticationListener(this)
}

override fun onZoomSDKInitializeResult(errorCode: Int, internalErrorCode: Int) {
    if (errorCode != ZoomError.ZOOM_ERROR_SUCCESS) {
        Toast.makeText(this, "Failed to initialize Zoom SDK. Error: $errorCode, internalErrorCode= $internalErrorCode", Toast.LENGTH_LONG).show()
    } else {
        Log.d("Zoom", "Initialize Zoom SDK successfully.")
        ZoomSDK.getInstance().loginWithZoom("xxxxxxxxxxxxxxxx@gmail.com", "xxxxxxxx")
    }
}

override fun onZoomAuthIdentityExpired() {}
override fun onZoomSDKLoginResult(p0: Long) {
    when (p0.toInt()) {
        ZoomAuthenticationError.ZOOM_AUTH_ERROR_SUCCESS -> {
            Toast.makeText(this, "Login successful.", Toast.LENGTH_LONG).show()
            createMeeting()
        }
        ZoomAuthenticationError.ZOOM_AUTH_ERROR_USER_NOT_EXIST,
        ZoomAuthenticationError.ZOOM_AUTH_ERROR_WRONG_PASSWORD -> {
            Toast.makeText(this, "Username / Password do not match.", Toast.LENGTH_LONG).show()
        }
    }
}

override fun onZoomSDKLogoutResult(p0: Long) {}
override fun onZoomIdentityExpired() {}

private fun createMeeting() {
    if (ZoomSDK.getInstance().isInitialized) {
        mPreMeetingService = ZoomSDK.getInstance().preMeetingService
        if (mPreMeetingService == null) {
            finish()
        }
    }

    val meetingItem = mPreMeetingService!!.createScheduleMeetingItem()
    meetingItem.meetingTopic = "Test 2"
    meetingItem.startTime = Date(System.currentTimeMillis() + 120 * 1000).time
    meetingItem.durationInMinutes = 30
    meetingItem.password = "123456"
    meetingItem.timeZoneId = TimeZone.getDefault().id

    mPreMeetingService!!.addListener(this)
    val error = mPreMeetingService!!.scheduleMeeting(meetingItem)
    if (error == ScheduleOrEditMeetingError.SUCCESS) {
        Toast.makeText(this, error.toString(), Toast.LENGTH_LONG).show()
    } else {
        Toast.makeText(this, error.toString(), Toast.LENGTH_LONG).show()
    }
}

override fun onListMeeting(result: Int, meetingList: List<Long?>?) {}

override fun onScheduleMeeting(result: Int, meetingNumber: Long) {
    if (result == PreMeetingError.PreMeetingError_Success) {
        Toast.makeText(this, "Schedule successfully. Meeting's unique id is $meetingNumber", Toast.LENGTH_LONG).show()
    } else {
        Toast.makeText(this, "Schedule failed result code =$result", Toast.LENGTH_LONG).show()
    }
}

override fun onUpdateMeeting(result: Int, meetingUniqueId: Long) {}
override fun onDeleteMeeting(result: Int) {}

}

Screenshots

Smartphone (please complete the following information):

  • Device: POCO X2, Samsung Galaxy S8+, Realme 2 Pro
  • OS: Android 10
  • Version : 29

Hi @andthinkstartpvt,

Sorry to hear you’re running into this issue and thank you for bringing it to our attention. After some trial and error, I was able to reproduce this locally within our sample app. This occurs when attempting to schedule a meeting immediately upon receiving a successful onZoomSDKLoginResult callback. After a short (~550ms) delay, this functions as intended.

We are currently investigating this behavior and will provide an update as soon as we have one.

Thanks!

Hi jon.lieblich, Is this issue resolved? I am still getting this error while scheduling the meeting.

Thanks.

Hi @nikithabagalkoti,

Are you receiving any callbacks from the PreMeetingServiceListener before trying to schedule the meeting?

Thanks!

Hi Jon,

I have used onZoomSDKLoginResult callback and not PreMeetingServiceListener . With the delay, i am able to schedule a meeting.

Thanks!

Hi @nikithabagalkoti,

Thanks for confirming. Everything in the PreMeetingService requires the SDK to maintain a connection to Zoom’s servers. Receiving a callback from that listener means that a connection has been established.

Thanks!

1 Like

I did the same but everythimeI amgettings OTHER_ERROR. I followed the same process, as the other user mentioned, I alos added delay 1000ms…

public void initializeSdk(Context context) {
ZoomSDK sdk = ZoomSDK.getInstance();
// TODO: For the purpose of this demo app, we are storing the credentials in the client app itself. However, you should not use hard-coded values for your key/secret in your app in production.
ZoomSDKInitParams params = new ZoomSDKInitParams();
params.appKey = “**************”;
params.appSecret = “****************************”;
params.domain = “zoom.us”;
params.enableLog = true;

    ZoomSDKInitializeListener listener = new ZoomSDKInitializeListener() {
        /**
         * @param errorCode {@link us.zoom.sdk.ZoomError#ZOOM_ERROR_SUCCESS} if the SDK has been initialized successfully.
         */
        @Override
        public void onZoomSDKInitializeResult(int errorCode, int internalErrorCode) {
            Toast.makeText(root_view.getContext(),"Hey, Successfully Initiated ZoomSDK",Toast.LENGTH_LONG).show();
            if(errorCode==0)
            {
                login("***********************","********");
            }

        }
        @Override
        public void onZoomAuthIdentityExpired() { }
    };
    sdk.initialize(context, listener, params);

}

private void login(String username, String password) {
int result = ZoomSDK.getInstance().loginWithZoom(username, password);
ZoomSDK.getInstance().addAuthenticationListener(new ZoomSDKAuthenticationListener() {

        @Override
        public void onZoomSDKLoginResult(long l) {

            if (l == ZoomApiError.ZOOM_API_ERROR_SUCCESS) {
                mAccoutnService = ZoomSDK.getInstance().getAccountService();
                mPreMeetingService = ZoomSDK.getInstance().getPreMeetingService();
                mPreMeetingService.addListener(new PreMeetingServiceListener() {
                    @Override
                    public void onListMeeting(int i, List<Long> list) {


                    }

                    @Override
                    public void onScheduleMeeting(int i, long l) {

                    }

                    @Override
                    public void onUpdateMeeting(int i, long l) {

                    }

                    @Override
                    public void onDeleteMeeting(int i) {

                    }

                    @Override
                    public void onGetInviteEmailContent(int i, long l, String s) {

                    }
                });

                mCountry = ZoomSDK.getInstance().getAccountService().getAvailableDialInCountry();
                if (mAccoutnService == null || mPreMeetingService == null) {
                    Toast.makeText(root_view.getContext(),"mAccountService OR mPreMeetingService are null",Toast.LENGTH_LONG).show();
                }
                else
                {
                    Log.e("MyErrors", "Start a Scheduled Meeting");
                    MeetingItem meetingItem = mPreMeetingService.createScheduleMeetingItem();

                    meetingItem.setMeetingTopic("Yeyy");
                    Date timeFrom = new Date(System.currentTimeMillis() + 3600 * 1000);
                    meetingItem.setStartTime(timeFrom.getTime());
                    meetingItem.setDurationInMinutes(30);
                    meetingItem.setCanJoinBeforeHost(false);
                    meetingItem.setPassword("dada");
                    meetingItem.setHostVideoOff(false);
                    meetingItem.setAttendeeVideoOff(false);
                    meetingItem.setAudioType(MeetingItem.AudioType.AUDIO_TYPE_VOIP);
                    meetingItem.setTimeZoneId(TimeZone.getDefault().getID());
                    meetingItem.setEnableWaitingRoom(true);
                    meetingItem.setAutoRecordType(MeetingItem.AutoRecordType.AutoRecordType_Disabled);

                    if (mPreMeetingService != null) {
                        PreMeetingService.ScheduleOrEditMeetingError error = mPreMeetingService.scheduleMeeting(meetingItem);
                        if (error == PreMeetingService.ScheduleOrEditMeetingError.SUCCESS) {
                            Log.e("MyErrors", "PreMeetingService.ScheduleOrEditMeetingError.SUCCESS  "+error);
                            Toast.makeText(root_view.getContext(), "Sucesssss, Meeting Created", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(root_view.getContext(), error.toString(), Toast.LENGTH_LONG).show();
                        }
                    } else {
                        Toast.makeText(root_view.getContext(), "User not login.", Toast.LENGTH_LONG).show();
                    }

                }
            }
        }

        @Override
        public void onZoomSDKLogoutResult(long l) {

        }

        @Override
        public void onZoomIdentityExpired() {

        }

        @Override
        public void onZoomAuthIdentityExpired() {

        }
    });

}

Everytime OTHER ERROR

@jon.lieblich / @nikithabagalkoti

can you help me on this pls

1 Like

As Jon.lieblich has mentioned in [use-delay](Getting "OTHER_ERROR" when schedule a meeting - #2 by jon.lieblich), i have used a delay after SDK initialise and login. After this delay, i am scheduling a meeting which worked for me.
Please try using a short delay and see if it helps.

Thanks!

Thanks alot for responding nikita… I tried that too but its not working… Please check the below code

 int result = ZoomSDK.getInstance().loginWithZoom(username, password);
 ZoomSDK.getInstance().addAuthenticationListener(new ZoomSDKAuthenticationListener() {
 **final Handler handler = new Handler(Looper.getMainLooper());**
**    handler.postDelayed(new Runnable() {**
**      @Override**
**      public void run() {**
@Override
            public void onZoomSDKLoginResult(long l) {

                if (l == ZoomApiError.ZOOM_API_ERROR_SUCCESS) {
                    mAccoutnService = ZoomSDK.getInstance().getAccountService();
                    mPreMeetingService = ZoomSDK.getInstance().getPreMeetingService();
                    mPreMeetingService.addListener(new PreMeetingServiceListener() {
                        @Override
                        public void onListMeeting(int i, List<Long> list) {


                        }

                        @Override
                        public void onScheduleMeeting(int i, long l) {

                        }

                        @Override
                        public void onUpdateMeeting(int i, long l) {

                        }

                        @Override
                        public void onDeleteMeeting(int i) {

                        }

                        @Override
                        public void onGetInviteEmailContent(int i, long l, String s) {

                        }
                    });

                    mCountry = ZoomSDK.getInstance().getAccountService().getAvailableDialInCountry();
                    if (mAccoutnService == null || mPreMeetingService == null) {
                        Toast.makeText(root_view.getContext(),"mAccountService OR mPreMeetingService are null",Toast.LENGTH_LONG).show();
                    }
                    else
                    {
                        Log.e("MyErrors", "Start a Scheduled Meeting");
                        MeetingItem meetingItem = mPreMeetingService.createScheduleMeetingItem();

                        meetingItem.setMeetingTopic("Test Meeting");
                        Date timeFrom = new Date(System.currentTimeMillis() + 3600 * 1000);
                        meetingItem.setStartTime(timeFrom.getTime());
                        meetingItem.setDurationInMinutes(30);
                        meetingItem.setCanJoinBeforeHost(false);
                        meetingItem.setPassword("dada");
                        meetingItem.setHostVideoOff(false);
                        meetingItem.setAttendeeVideoOff(false);
                        meetingItem.setAudioType(MeetingItem.AudioType.AUDIO_TYPE_VOIP);
                        meetingItem.setTimeZoneId(TimeZone.getDefault().getID());
                        meetingItem.setEnableWaitingRoom(true);
                        meetingItem.setAutoRecordType(MeetingItem.AutoRecordType.AutoRecordType_Disabled);

                        if (mPreMeetingService != null) {
                            PreMeetingService.ScheduleOrEditMeetingError error = mPreMeetingService.scheduleMeeting(meetingItem);
                            if (error == PreMeetingService.ScheduleOrEditMeetingError.SUCCESS) {
                                Log.e("MyErrors", "PreMeetingService.ScheduleOrEditMeetingError.SUCCESS  "+error);
                                Toast.makeText(root_view.getContext(), "Sucesssss, Meeting Created", Toast.LENGTH_LONG).show();
                            } else {
                                Toast.makeText(root_view.getContext(), error.toString(), Toast.LENGTH_LONG).show();
                            }
                        } else {
                            Toast.makeText(root_view.getContext(), "User not login.", Toast.LENGTH_LONG).show();
                        }

                    }
                }
            }

            @Override
            public void onZoomSDKLogoutResult(long l) {

            }

            @Override
            public void onZoomIdentityExpired() {

            }

            @Override
            public void onZoomAuthIdentityExpired() {

            }
        });
**      }**
**    }, 550);**

My appication Config is :
minSdkVersion 21
targetSdkVersion 30
versionCode 271
versionName “2.7”
compileSdkVersion 30

Its not working even after days of trying… Please look at my code once…
@nikithabagalkoti @jon.lieblich

if (ZoomSDK.getInstance().isInitialized()) {
int result = ZoomSDK.getInstance().loginWithZoom(username, password);
if (result == ZoomApiError.ZOOM_API_ERROR_SUCCESS) {
// Request executed, listen for result to start meeting
new CountDownTimer(2000, 2000) {
public void onFinish() {
ZoomSDK.getInstance().addAuthenticationListener(authListener);
if(ZoomSDK.getInstance().isLoggedIn())
//schedule a meeting
}
public void onTick(long millisUntilFinished){ }
}.start();
}
}
else
{
//please try again

        }

I followed the sample app which has the code to schedule a meeting.

Thanks alot for the response… I will work on it

Hi @srinivas, thanks for using our SDK.

Based on the code you have provided, you are trying to access the PreMeetingService too soon. Please ensure that you have received a callback from the PreMeetingServiceListener before attempting to schedule a meeting.

Thanks!

Every time the control coming to this place… its not going to onScheduleMeeting … And the Error is sameOTHER_ERROR… please need help, Sorry @jon.lieblich , I didn’t understand the solution you proposed… Can you please point the error and solution… Iamstruggling on this forlong time…

Hi @srinivas,

If you already have meetings scheduled on your account, you should be receiving the onListMeeting callback with a list of your meetings. Can you try waiting until after this callback is invoked before you attempt to schedule a new meeting?

Thanks!

Hey @jon.lieblich ,

Thanks alot , I resolved it by giving little wait aafter I added PreMeeting Service Listener. But Why is that every time I see MeetingList size as 1, though I do not have any (checked through Zoon login UI)

Hi @srinivas,

Glad to hear it’s working! The extra meeting being returned is a known issue with the PreMeetingService, unfortunately. Right now, we recommend using the REST API as an alternative workaround.

Thanks!

Hi,

ListMeeting lists the personal ID which is why the size is always 1.

Thanks.

Thanks for sharing @nikithabagalkoti!

This does appear to be the case. :slightly_smiling_face:

1 Like

Yeah, I too was thinking the same…

And @jon.lieblich, @nikithabagalkoti , I have one doubt… We have taken a developer SDK with Pro plan upto 100 users, Now I have few doubts.

  1. I can create scheduled meetings and with login/without login I can join the meetings after SDK initialization…
  2. So for Attending the meeting Do we need to use the same SDK access & secret keys for my 100 participants(join only) to initialize the SDK or I need to have separate SDKs ?
  3. I can call Zoom client app but the meeting details are visible for me, I am not able to control the options if I am not opening the meeting in my application.
 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("zoomus://"));
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }

Can you please help me, as per my client requirement I have to hide options as per the user’s choice. I have done this but SDK initialization is must and Since I have 100 participants in my plan , Can I use the same access & secret key for my meeting attendants.

We have only one license with 100 participants.