How to work with guest Circuit users from smartphone apps? - circuit-sdk

I want to use circuit as a videocall system in a B2C environment in which only the backend call agents are Circuit users (but the end-clients are not!!).
The only way I see to establish a videocall would be by creating a new conversation, get the url guest link and send it to the end-client.
This could be a “not-that-bad” possibility in a PC web portal front end….but in the case of a smartphone app (ie Ionic-Cordova) that link would redirect the end client to the Circuit app download site, forcing the user to install Circuit app which would not be accepted in the general case.
Is there any other possibility to implement a use case like this from Smartphone apps by embedding the guest connectivity in the app making Circuit transparent for the end client? Any possibility by using a pool of dummy Circuit users to be assigned temporarily to the app users?

That's a good question. There are two problems as pointed out by you.
1. SDK cannot be used without an authenticated Circuit user
I.e. the SDK has no support for guest access other than retrieving the guest access link. Workarounds are:
a) use the guest link and have the non-Circuit users join using their Circuit web or mobile client, or
b) create a new conversation each time and use a pool of users. But this workaround does not look intuitive and have actually never tried it in an app.
2. Guest users require Circuit app
Again as pointed out correctly, if going with a) above, the mobile client users would need the Circuit app to join a guest session.
Conclusion
For desktop users 1a is probably the best option. But for mobile users you'd have to try a workaround with a pool of users.
We are aware of these limitation and are looking into a better solution to address your use case. I will update this post once we have more information of the details and timeframe.

Related

Authentication options in Smart TV browsers

I am about to implement a reception screen view of some data my product holds. This data is not extremely sensitive, but enough so that my customers do not want it just out there on the internet for all to see.
The concept is a smart tv with a built in web browser that displays a webpage hosted by my application. My application requires authentication for all other interaction, but the smart tv does not support authentication. So I would like to secure the page somehow, so it isn't just available for all to see.
The only options I see are:
Security by obscurity. I would really like to avoid this one.
IP Whitelisting. This I could do, but not all my clients have a static IP.
Enter credentials on screen. This is not really feasible and the credentials are lost on reboot. So we cannot do this.
Are there other options I just don't know about.
For límited input devices like TVs where is not easy enter credentials there are some Open Source options like CPA (developed by EBU for Hbbtv Use Cases) than can work for you and you can control the e2e
CPA
Reference Implementation
The autenticacion token can be stored into your SmartTV app until its expiration or client's logout, etc.
There is also
After some research I found that the best option is the OAuth 2.0 Device Authorization Flow.
The gives the user an experience like the one used when setting up Google Chromecast or AppleTV.
https://auth0.com/docs/get-started/authentication-and-authorization-flow/device-authorization-flow

Is Agora.io able to listen in the background?

Assuming I integrate Agora in my website (PC + mobile hybrid app that wraps a mobile-web site).
Will it be able to listen for users joining a channel while the client is not browsing the website?
Meaning, can it work inside a service worker on both PC and mobile?
I need a reliable way to have voice calls between users on my web application even when they are not using the website.
If you create a WebView or just open an iframe of the website then the user's video is turned off when the app is closed even if the microphone permissions are off.
The user is still on call and can track people joining but as soon as you close the browser, your video stream disappears for the other users.
To have background based workflow, I recommend you use the native SDKs for the app as well as desktop applications and implement them with the same App Id to maintain consistency.
An alternative solution is to use the RTM SDK as the RTM SDK allows you to send messages even in the background if the user is logged in and has joined the channel.

How to tie an account from a backend server to a google assistant user

I have a web application setup to handle webhook requests from an Actions-on-Google/Dialogflow application using the Google Assistant. Users don't need to sign-in to a google account in order to use my web application and I'd prefer to keep it that way, so that users can sign in with any email address.
I also want my users to be able to interact with my application using the Google Assistant, and be able to access personal/contextual data via the assistant (i.e. when a speaker says, "what's on my shopping list", the web app needs to be able to know what my means).
Currently, I have this working by using my web app to issue a unique short code to my user (in the web app UI) and then with an intent on the Assistant where the speaker says "My code is 1-2-3-4" and then my web app can identify the user from then on (by saving the userId from the webhook request to whatever user got the short code 1234 and then using that userId to lookup the user on each subsequent request.)
My question is, is there a better way to do this? Ideally, in my web app, I'd like to have something like an "Authorize Google Assistant" button, which would then link the user's google account to their web-app account, so that the conversation on the Assistant is seamless.
Has anyone done this before?
Thanks
This is the perfect use case for Account Linking with the Google Assistant.
From your users' perspective, they will start to use your Action. If they're doing so through a speaker and they haven't linked the account yet, they'll be directed to a mobile device to do so. On a mobile device, they'll be redirected to a page on your website where they will been to authenticate themselves and authorize your server to let them in through the Assistant. Once they have done so, they won't need to log in again, the accounts will be linked, and they'll be able to use the voice Action without further obstruction.
From your perspective as a developer, you'll need to setup an OAuth2 server (I suggest the code flow). That login process I mentioned is the first step in the OAuth dance, and will end up with you issuing a code to Google. They will then exchange this code for an Auth Token (with a limited lifetime) and a Refresh Token (which does not expire). They will periodically use the Refresh Token to get new, valid, Auth Tokens for this user. When the user issues a voice command, the Auth Token will be passed as a field in the JSON to your fulfillment server, and you can use this to verify who the user is and that they are authorized to use your service.

Best API for syncing Exchange Email/Calendar to my webapp?

Looking for additional products similar to www.nylas.com which provide an API to sync my web application with my microsoft exchange email and calendar.
Most email services are aimed at marketing and hosting, whereas I just want a simple connection between exchange and my app, without building an API from the ground up.
Any suggestions?
Why not using Exchange EWS?
Calendars and EWS in Exchange
Working with calendar items by using the EWS Managed API 2.0
I do not know your App so a simple cronjob would do it...
P.S.
By the way I personally think the best way is to access the calendar via the App directly on the device. The reason is that a user normally have ActiveSync configured so that he get all the content on his device. If he change his password he do that on the device. So your app might use a old password and will no longer work. Additional your app try to access content with the old password and might block the user account then. The user got upset and will no longer use it. Accessing the calendar now directly on the device eliminate the need to get the user password and also eleminite the need that the user need to change it in your app...

Windows Phone 8 - Device Management

I am a newbie in Windows Phone development. Could someone please help me with the below questions with respect to Windows Phone 8.
Company Hub: I assume that this will be a custom application that works as a store/catalog for other company applications (plus additional company information). This has to be developed either by the company itself, or by a vendor for the company. Please correct me if I am wrong.
Company Hub is invoked by going to Settings ->Company Apps. Again, please correct me.
In some videos, I have seen people logging into "Company Apps" by clicking on an "Add Account" button (Settings ->Company Apps). What is this account? It just asks for an email address and password.
How is MDM (Mobile Device Management) implemented in WP8 devices? Is it using the WNS (Windows Notification Services), just like Apple's APNS? Is there a documentation available for implementing MDM in WP8?
If this is handled using WNS, then what actions can be performed on a remote Windows Phone 8 device? Is there available a list of commands?
Saw few examples using Exchange ActiveSync. Some product companies have their own Administration Portal to setup ActiveSync configurations. How can this be done?
You are correct
You are correct
AFAIK the company account is autodetected, based on the email address that user provides. Companies must get certificate from Symantec in order to use Company Apps. Check out also Applications Enrollment Token from MSDN
Documentation for MDM API is currently (09.Nov 2012) not yet publicly available.
You can check out press releases from MobileIron or AirWatch - see what they promise - that covers the API possibilities
Update: Google 2WP8_Enterprise_Device_Management_Protocol.pdf".
The Settings->Company Apps is where you add your company's hub but once you add it it will show up as an app in the app list and can be pinned to the start screen.
It's basically an app that can be used to show information and install other apps
Users in your company will need to authenticate themselves to get your company app. I'm not sure about the details there