Web SDK version 1.7.9 is released!

Hi @Michael_Purnell,

Will there be an option to disable the recaptcha before this version is enforced? This recaptcha is a no go for us right now.

Agreed! We are embedding this in an already validated environment, so the recaptcha idisrupts the smooth integration. We’ll opt for another streaming option before incorporating something that requires user verification.

1 Like

@Michael_Purnell @JackYang @tommy

Guys … this is starting to get ridiculous. With each new update release, broken code is constantly introduced. Things are fixed and other broken. It’s as if ZERO testing is done prior to release. It’s gotten to a point where the only stable version is 1.7.7 and version runs like a dogs breakfast.

I just tried this on my local using Chrome as the host and Firefox as a guest. I have 2 cameras so I can use one for each user. The host starts up fine, the guest is greeted with an ugly white screen with “check captcha” which doesn’t even work. If they click 4 times, a help button appears and THAT doesn’t even work.

Don’t release code if it is broken or completely destroys the user experience. In this case, you have broken our platform where we can’t use Zoom as a service.

I am considering bringing this up legally as we pay for a Business Plan and we can’t use the service properly anymore. We need the business plan for webinars, but for the rest we are being rorted. Happy to take this up privately as well outside of this forum if there is a direct number or email I can contact.

Regards,
Simone

2 Likes

Sorry, inconvenience to you. currently Recaptcha still have some issue.

  1. safari default can’t pass checking.
  2. only can works https://youdomain:443
  3. const domainReg = /(?!://)([a-zA-Z0-9]+.)?([a-zA-Z0-9][a-zA-Z0-9-]+).([a-zA-Z]{2,6})/?.*/; if you domain miss match the Reg, it also don’t work.
  4. the help link https://zoom.github.io/sample-app-web/captcha
    you can still use 1.7.7 or 1.7.8 or ask zoom disable recaptcha for you account . @Michael_Purnell

Hi @JackYang,

  1. umm … ok. Pretty big market to be cutting out, but it can wait for now as far as we are concerned.
  2. I’m obviously using https as the protocol of the domain, but I am not appending the port number to the URL. Our production doesn’t either. I hope you don’t mean that it must contain the port number in the URL, because that is not going to work.
  3. the domain matches the expression, so no issue there.
  4. I’m not interested in captcha

Regarding using previous versions, that is the only option at the moment. As buggy as it is, 1.7.8 is slightly better than 1.7.7.

If it is possible to have recaptcha disabled on our account that would be amazing. But the reality is that it MUST be given as an option to the developer whether to enable it or not, it can’t be imposed, irrespective of whether it works or not. In our case, it renders our integration useless so it has to be removed.

Thank you.
Simone

@JackYang
Can you help us start 1.7.8 in production for us in the meantime?

This is our code for 1.7.9, works perfectly. How do we change it to work for 1.7.8?

<script src="https://source.zoom.us/1.7.9/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/1.7.9/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/1.7.9/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/1.7.9/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/1.7.9/lib/vendor/jquery.min.js"></script>
<script src="https://source.zoom.us/1.7.9/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/zoom-meeting-1.7.9.min.js"></script>
<script src="js/tool.js"></script>

<script>
    setTimeout(() => {
        const testTool = window.testTool;
        // get meeting args from url
        const tmpArgs = testTool.parseQuery();
        console.log("meeting window", tmpArgs)
        const meetingConfig = {
            apiKey: tmpArgs.apiKey,
            meetingNumber: tmpArgs.mn,
            userName: (function () {
                if (tmpArgs.name) {
                    try {
                        return testTool.b64DecodeUnicode(tmpArgs.name);
                    } catch (e) {
                        return tmpArgs.name;
                    }
                }
                return (
                    "CDN#" +
                    tmpArgs.version +
                    "#" +
                    testTool.detectOS() +
                    "#" +
                    testTool.getBrowserInfo()
                );
            })(),
            passWord: tmpArgs.pwd,
            leaveUrl: "/thankyou.html",
            role: parseInt(tmpArgs.role, 10),
            userEmail: (function () {
                try {
                    return testTool.b64DecodeUnicode(tmpArgs.email);
                } catch (e) {
                    return tmpArgs.email;
                }
            })(),
            lang: tmpArgs.lang,
            signature: tmpArgs.signature || "",
            china: tmpArgs.china === "1",
        };

        console.log(JSON.stringify(ZoomMtg.checkSystemRequirements()));

        // it's option if you want to change the WebSDK dependency link resources. setZoomJSLib must be run at first
        ZoomMtg.preLoadWasm();
        ZoomMtg.prepareJssdk();
        function beginJoin(signature) {
            const meetingInfo= ["topic","host","participant","dc"]
            const variables = {
                leaveUrl: meetingConfig.leaveUrl,
                webEndpoint: meetingConfig.webEndpoint,
                disableInvite: true,
                meetingInfo,
                success: function () {
                    console.log(meetingConfig);
                    console.log("signature", signature);
                    $.i18n.reload(meetingConfig.lang);
                    console.log("andar ki baat", {
                        meetingNumber: meetingConfig.meetingNumber,
                        userName: meetingConfig.userName,
                        signature: signature,
                        apiKey: meetingConfig.apiKey,
                        userEmail: meetingConfig.userEmail,
                        passWord: meetingConfig.passWord
                    })
                    ZoomMtg.join({
                        meetingNumber: meetingConfig.meetingNumber,
                        userName: meetingConfig.userName,
                        signature: signature,
                        apiKey: meetingConfig.apiKey,
                        userEmail: meetingConfig.userEmail,
                        passWord: meetingConfig.passWord,
                        success: function (res) {
                            console.log("join meeting success");
                            ZoomMtg.showMeetingHeader({
                                show: false
                            })
                            ZoomMtg.showInviteFunction({
                                show: false
                            });
                        },
                        error: function (res) {
                            console.log("error in join")
                            console.log(res);
                        },
                    });
                },
                error: function (res) {
                    console.log(res);
                }
            }
            console.log(variables)
            ZoomMtg.init(variables);
        }
        console.log("Did this run")
        beginJoin(meetingConfig.signature);

    }, 2500);
</script>
<script src="https://source.zoom.us/1.7.8/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/1.7.8/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/1.7.8/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/1.7.8/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/1.7.8/lib/vendor/jquery.min.js"></script>
<script src="https://source.zoom.us/1.7.8/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/zoom-meeting-1.7.8.min.js"></script>
<script src="js/tool.js"></script>

<script>
    setTimeout(() => {
        const testTool = window.testTool;
        // get meeting args from url
        const tmpArgs = testTool.parseQuery();
        console.log("meeting window", tmpArgs)
        const meetingConfig = {
            apiKey: tmpArgs.apikey,
            meetingNumber: tmpArgs.mn,
            userName: (function () {
                if (tmpArgs.name) {
                    try {
                        return testTool.b64DecodeUnicode(tmpArgs.name);
                    } catch (e) {
                        return tmpArgs.name;
                    }
                }
                return (
                    "CDN#" +
                    tmpArgs.version +
                    "#" +
                    testTool.detectOS() +
                    "#" +
                    testTool.getBrowserInfo()
                );
            })(),
            passWord: tmpArgs.pwd,
            leaveUrl: "/thankyou.html",
            role: parseInt(tmpArgs.role, 10),
            userEmail: (function () {
                try {
                    return testTool.b64DecodeUnicode(tmpArgs.email);
                } catch (e) {
                    return tmpArgs.email;
                }
            })(),
            lang: tmpArgs.lang,
            signature: tmpArgs.signature || "",
            china: tmpArgs.china === "1",
        };

        console.log(JSON.stringify(ZoomMtg.checkSystemRequirements()));

        // it's option if you want to change the WebSDK dependency link resources. setZoomJSLib must be run at first
        ZoomMtg.preLoadWasm();
        ZoomMtg.prepareJssdk();
        function beginJoin(signature) {
            // const meetingInfo= ["topic","host","participant","dc"];
            const variables = {
                leaveUrl: meetingConfig.leaveUrl,
                webEndpoint: meetingConfig.webEndpoint,
                disableInvite: true,
                // meetingInfo, // this 1.7.9 api
                success: function () {
                    console.log(meetingConfig);
                    console.log("signature", signature);
                    $.i18n.reload(meetingConfig.lang);
                    console.log("andar ki baat", {
                        meetingNumber: meetingConfig.meetingNumber,
                        userName: meetingConfig.userName,
                        signature: signature,
                        apiKey: meetingConfig.apiKey,
                        userEmail: meetingConfig.userEmail,
                        passWord: meetingConfig.passWord
                    })
                    ZoomMtg.join({
                        meetingNumber: meetingConfig.meetingNumber,
                        userName: meetingConfig.userName,
                        signature: signature,
                        apiKey: meetingConfig.apiKey,
                        userEmail: meetingConfig.userEmail,
                        passWord: meetingConfig.passWord,
                        success: function (res) {
                            console.log("join meeting success");
                            ZoomMtg.showMeetingHeader({
                                show: false
                            })
                            ZoomMtg.showInviteFunction({
                                show: false
                            });
                        },
                        error: function (res) {
                            console.log("error in join")
                            console.log(res);
                        },
                    });
                },
                error: function (res) {
                    console.log(res);
                }
            }
            console.log(variables)
            ZoomMtg.init(variables);
        }
        console.log("Did this run")
        beginJoin(meetingConfig.signature);

    }, 2500);
</script>

@darragh.duffy You have exact same issue as me.
After spending some time with internal zoom dev, it has been found that the regex used to detect & use the original domain name (for the zoom sdk cookie i guess) is incorrect thus break the recaptcha feature when your application domain name is not covered by that regex.
This is why nothing happen even after completing the recaptcha.

This is what @JackYang reported in his summary. Check the regex to see if it’s coming from there too but i’m pretty sure it is. If not, then may be interesting to report it.

What a naive & restrictive domain regex…

Here is a way to extract a domain name (don’t know if that’s the best but cover pretty well most of patterns):
^(?:https?://)?(?:[^@/\n]+@)?(?:www.)?([^:/?\n]+)

Please fix it ASAP, we cannot change our domain names just to have the 1.7.9 working.

@nvivot - yes correct Captcha has an issue with Reg Ex, in one of my eexamples I am using NGROK tunnels, and the domain is https://xxxxxx.yyyyy.ngrok.io/ - as such the Reg Ex will break. I setup a different domain to get around this issue for the moment. We will wait for CAPTCHA option to be disabled, we cant roll out with the CAPTCHA option at the moment.

I am expereincing another issue with 1.7.8 and also with 1.7.9 - I wonder if you are experiencing this aswell? V 1.7.7 the vide stream is very stable works pretty much all the time, but in 1.7.8 and 1.7.9, the vide stream works 1 out of 10 trys. By any chance are you experiencing something similar?

About the vide stream, i’m going to perform tests this afternoon. Except with low specs machines i do not notice any issue with video in general.

But one bug we do have with previous version when running a meeting as host with a very high spec machine, then the video of the joiner is not visible. The vide stream is active and good, but just not shown (black screen for the non host video). This is clearly a UI bug and not a vide stream bug.
And from the few tests performed until now, the 1.7.9 do not fix this.
It was said that with the audio / video library sync when loading (introduced in 1.7.9) this would probably be fixed, i had a doubt about it since it’s more a UI bug, now we have confirmation…

asked for disabling captcha

Mark Esguerra (Zoom) 

Jul 1, 2020, 11:42 AM PDT
Hi Grupo Uno,

Thanks for contacting Zoom Support!

Sorry to hear that you are having issues with the Captcha verification on our site. We use the Captcha service from Google to help protect our sites from spam and abuse. We have no ability to disable the Captcha service on our sites, as this is set globally.

To fix most common issues with Captcha, you can try that same page with a different web browser or different computer. If still having an issue, you might try using the browser on your mobile device, making sure to disconnect from your wifi and use 4G service instead, as that would allow you to access that page from a completely different network.

Please let us know if there are any other questions concerning Captcha access and we will be glad to assist.

Thanks,
Mark

1 Like

This exactly. We’ve found that this only works on 1.7.7 and that you can make the video start working if the host start screen sharing first (from the zoom native client) then disables screen sharing; thereafter the video will work.

Exactly, and it’s definitely not an option for the host to have to start sharing something to get the video.
Another thing to mention, when they are multiple attendees, we noted this affect the host for only 1 of the participants (the first who joined - but not really sure about that)

@JackYang we already reported that bug with an internal ticket. Since it’s not fixed with 1.7.9 could you please increase the priority on it: not having the video for a host with high spec CPU is not acceptable.

This issue seems to be UI (not on the video stream itself) and due to an inappropriate management of available threads / concurrency issue (race condition) with high spec CPU. This is present since 1.7.7 as also mentioned by @flippyhead

I originally posted 7 days ago, and am still having the same issues with 1.7.9 and the recaptcha. What I am understanding is this feature cannot be disabled and there no plans to allow the disabling of this feature. Please correct me if I am off base with that assumption.

This would be fine if it just worked, but it still does not. I attempted to update to the 1.7.9.1 due to production being on custom ports, but that version had the same issue with the error message indicating incognito mode when we are not in incognito.

We are seeing black screen issue as several people reporting here with 1.7.9 version and some times there was issue on audio as well. Did you guys find any solution ?

I think it should be fixed now in version 1.7.10. Try it out and report back if it works!

1 Like

If I read this correctly it seems that the recaptcha feature cannot be disabled. Is there going to be an option in a future release to disable this feature?

Hey @erichhansen, @vijayk.kannan, @pat, @nvivot, @flippyhead, @victor_999, @darragh.duffy,

Version 1.7.10 was just released addressing the black screen and recaptcha issues with some domains.

Bug Fixes

  1. Fixed random video black screen in meeting.
  2. Fixed recaptcha don’t work on some domain.

Please upgrade to 1.7.10:

Thanks,
Tommy

1 Like

@tommy Thanks for the update, I couldn’t find a changelog for 1.7.10 - does it include options for disabling reCaptcha? In our case our users are already authenticated and we do not want them to have to go through reCaptcha to join a meeting.

1 Like