nextcloud / talk-android

📱😀 Video & audio calls through Nextcloud on Android
Other
521 stars 226 forks source link

Add ability to join public calls without an account #261

Open enoch85 opened 5 years ago

enoch85 commented 5 years ago

To get a wider spread of Talk, and enhance the usability it would be nice to somehow generate automatic guest accounts that users could use with Talk.

So for example, if I choose a contact from the telephones contacts (full contact book) a link would be generated that automatically creates a guest user that are valid for let's say 1 hour.

That way anyone with Nextcloud and Talk installed could use Talk for private chats or video calls - not depending if they have Talk or not.

Maybe my idea isn't so thought through, but I would really like to make it easier for anyone using Talk without the need for a Nextcloud Server. I know that we have public conversations, but it would be nice to invite anyone using a guest account so that the external user could get the full benefit of using Talk on their Phone as well.

Maybe send something automatically generated per SMS like:

Hey! [Full Name] wants to talk to you on Nextcloud Talk. Download the app from Play here: [Link]
Your temporary credentials are:

Username:
Password: 

The credentials are valid for 1 hour.

The server address is: [Address of the senders server based on what's used for Talk in their config]

My proposal would need some work on the server side as well I guess.

enoch85 commented 5 years ago

Or even better, when you access a public link from a smartphone, detect that it's a smartphone and ask the user to download Talk. Then when Talk is installed, use the public link as a login somehow.

Not so thought through, but yeah I hope it's possible somehow.

enoch85 commented 5 years ago

The point being: I don't want to manually create users on my server to be able to use Talk for Android with external contacts that doesn't use Nextcloud.

mario commented 5 years ago

How about I make it possible to join a public conversation without an account from the app?

enoch85 commented 5 years ago

You nailed it, as usual! :)

enoch85 commented 5 years ago

...if you mean that it would be possible to use the app without an account, just a public link?

enoch85 commented 5 years ago

So basically two options when you start the app for the first time:

  1. Login
  2. Use public link
mario commented 5 years ago

Yup, that's it.

enoch85 commented 5 years ago

Super!

escoand commented 5 years ago

Any progress so far? Using public links is already working (when logged in) so is it a bigger problem?

mario commented 5 years ago

No progress I'm afraid @escoand - just busy with other things! Feel free to contribute though, we'd all appreciate it! :)

Art4 commented 5 years ago

This feature would make it possible to use Nextcloud Talk as a privacy friendly news room for school classes or events. One could create a conversation with link and tell the parents/participants to install the Nextcloud Talk app. They could join the conversation without the need for an account. That could be a serious alternative instead of using WhatsApp for this purposes.

4ug3r commented 5 years ago

I would welcome this feature

feutl commented 4 years ago

I was expecting this feature being implemented already, but found this issue :) Anyhow, I would like to see this feature as well. I am hosting NC on my own, and thought about Talk as a great alternative to Signal, Whatsapp, Threema etc for the little ones to start chatting with family members AND some selected friends. The control is still in the hand of the parents / admin and you can easily invite someone by sending the link and let them install Talk to use the native Phone/Tablet capabilities like notifications. And all of this without risk losing data or getting into other troubles.

Thanks

Laykou commented 4 years ago

👍

EliterScripts commented 4 years ago

I would definitely appreciate this feature!

gersteba commented 4 years ago

Hi! How far are we concerning that essential feature? Kind regards, Gerald

StyXman commented 4 years ago

It's a shame that the only way to watch a particular issue on GitHub is to add a message that doesn't help solving this issue. Sorry for the noise.

enoch85 commented 4 years ago

It's a shame that the only way to watch a particular issue on GitHub is to add a message that doesn't help solving this issue. Sorry for the noise.

There's a subscribe button:

Screenshot from 2020-03-20 09:18:34

StyXman commented 4 years ago

Ah, duh

escoand commented 4 years ago

How far are we concerning that essential feature?

essential, especially as Skype Business is currently free and provides exactly this service.

BikeAtor commented 4 years ago

+1

fajabird commented 4 years ago

+1

need this to invite friends to a private conference call. As some will want to join from smartphone and I know they have no nextcloud accounts they currently cannot use the app. Sending a link via e.g. Signal which they simply can touch to fire up the app logging into the conference right away would be an awesome feature.

mario commented 4 years ago

You can already send a link via Signal, it's just that they have to use the web interface to join :)

fajabird commented 4 years ago

OK - will try if it works in popular mobile browsers like firefox and chrome on android and safari on OS - or do you already have like a test-results list?

mario commented 4 years ago

No, we don't.

On Wed, 25 Mar 2020, 14:59 fajabird, notifications@github.com wrote:

OK - will try if it works in popular mobile browsers like firefox and chrome on android and safari on OS - or do you already have like a test-results list?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nextcloud/talk-android/issues/261#issuecomment-603854922, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAABNMV6TXNAKNO3EGMVXMDRJIE4BANCNFSM4FMZEV5Q .

poggenpower commented 4 years ago

You can already send a link via Signal, it's just that they have to use the web interface to join :)

Unfortunately I was not able to join a Video-Chat from Safari on iOS. Therefore a functionality to join a chat via public link in the app would be great and make the user experience much better.

fajabird commented 4 years ago

So far I only tested Firefox and derivates like Fennec on Android and that was working although video was very choppy, so not a great user experience either.

doitux commented 4 years ago

Feel free to also post a bounty on this issue here: https://www.bountysource.com/issues/61503906-add-ability-to-join-public-calls-without-an-account

Maybe it helps to find the support wanted to get this feature implemented.

dr0pdb commented 4 years ago

@mario Hi, I am a computer science student. I'll be happy to work on this.

This will be my first contribution to the project hence I might ask a few questions. First of which is that, does it need some integration on the server-side or is it already done?

mario commented 4 years ago

@srv-twry no integration on the server side needed. I can draw some mockups and point you to places that need work later today if you're interested?

dr0pdb commented 4 years ago

Yes, please. That would be super helpful. Thanks :)

mario commented 4 years ago

Awesome, thank you for your interest @srv-twry :))

dr0pdb commented 4 years ago

@mario I am trying to import this project into Android studio version 3.6.1 which is the latest stable. I am getting the following error message:

Android Studio cannot open this project, please retry with Android Studio 4.1 or newer.

Do I need the canary version of Android studio to work with this project?

mario commented 4 years ago

@srv-twry I am afraid so, yes.

EliterScripts commented 4 years ago

Not true. The problem is that you have to login to a nextcloud server (any server), then you can click the link to a public chat, and it lets you in, even without an account on the server where the public meeting is held.

mario commented 4 years ago

@EliterScripts this is for the web. This issue is about the client (Android) app and everything we need to make this happen already exists on the server.

mario commented 4 years ago

@srv-twry sorry didn't get to it yesterday - today, I promise :)

EliterScripts commented 4 years ago

@EliterScripts this is for the web. This issue is about the client (Android) app and everything we need to make this happen already exists on the server.

We are talking about the same thing. You can join a public meeting without logging in to their server. The problem with the current apps is that you have to get past the login dialogue before joining someone else's public meeting anonymously.

fajabird commented 4 years ago

When started for the first time the app should offer a login and additionally a "join via link" options. So logging in should not be mandatory. When the user does not login the app should present this "welcome" dialog anytime the app is started.

Additionally the app could register itself for opening URLs but of course not all URLs (like a browser app) but only if they match a specific syntax like "http(s)://example.domain.com:/nextcloud/index.php/call/" - but I don't know if thats possible. From experience with other tools like Skype for business I know that opening an URL first the browser picks up and opens a website where the user is presented another URL that will trigger the application on the desktop or a button to continue with a browser based session. This of course will require also changes on server side.

escoand commented 4 years ago

Additionally the app could register itself for opening URLs but of course not all URLs (like a browser app) but only if they match a specific syntax like "http(s)://example.domain.com:/nextcloud/index.php/call/" - but I don't know if thats possible.

I think the other register a "provider protocol" instead, something like nextcloud-talk://example.domain.com/conference-id.

See: https://docs.microsoft.com/en-us/skype-sdk/skypeuris/skypeuris https://docs.microsoft.com/en-us/skype-sdk/skype-for-business-uris/sfbmobileuri

The Android documentation is: https://developer.android.com/training/app-links/deep-linking

mario commented 4 years ago

@srv-twry working on mockups and explanations now :)

mario commented 4 years ago

@fajabird and @escoand that's a whole different topic - please stay on-point :)

mario commented 4 years ago

@fajabird and @escoand - https://github.com/nextcloud/talk-android/issues/96 :)

mario commented 4 years ago

So I started drawing mockups, but then figured they're relatively simple anyway. So - we'll do this in steps.

Step no 1:

Extend ServerEntry with a "Other actions" button/label below the server url entry. Once clicked, it opens a bottom sheet with the available actions. Currently the only action would be: "Join a public conversation"

Server entry code is located here, and can also serve as a reference on how to add new screens: https://github.com/nextcloud/talk-android/tree/master/app/src/main/java/com/nextcloud/talk/newarch/features/account/serverentry

Example on how to add a bottom sheet along with its actions is here: https://github.com/nextcloud/talk-android/blob/b9ff07088425c84e19f450f4c95a7db373a9e66b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListView.kt#L187

Step no 2:

Add a new screen which allows inputing a conversation URL, validates it (we will come to this later) and if the server allows guests to join either opens a chatview OR presents a password field below the conversation URL if the conversation requires a password.

The "Join" action would be presented by a FloatingActionButton with an arrow in the bottom right corner. An example of how to use FAB in such a way can be found here: https://github.com/nextcloud/talk-android/tree/master/app/src/main/java/com/nextcloud/talk/newarch/features/contactsflow/groupconversation

Let me know if you have any questions and/or if you need additional clarifications. If needed, I'll be happy to do simple mockups for you as well though the UI changes themselves should be relatively simple.

@srv-twry - thanks for working on this! :)

jelle-e commented 4 years ago

Thanks for working on this! I'm also looking for a way to use public links in the Talk app.

I've tested the Talk app v8.0.8, (Android 7). I'm logged in with the Talk app on my own server, server A. When pasting the public Talk link of server B, I do get into the chat and can communicate, but when clicking the Video or Mic icons, nothing happens. I cannot start or join a video call through the public link of server B.

I don't know if this information is helpful. Hope you get this working.

Oh and @srv-twry , if you need another Nextcloud testserver, I'd be happy to provide.

dr0pdb commented 4 years ago

Status update.

I haven't been able to devote time into this since I've got busy with my internship and academics. I will try to devote time to this whenever I can. In the meantime if anyone else wants to take a crack at this, feel free to do so.

shimmy11 commented 4 years ago

Could anyone reserve an evening and get this done? This really is a vital feature as participation in the browser on Android is basically unusable, too slow. Can't expect every participant to register an account. Thanks for all the nice work, but please also incorporate this last step - for without it, the whole concept is MUCH less usable, which is really a shame, especially these days when NC had the potential to gain a significant amount of market share. Cheers.

WeberEric commented 3 years ago

@mario is it necessary to get a guest user from the nextcloudserver? And how i can get it? There are so many code parts which needs a valid user object. Is 'joinConversation' the right function to enter the conversation without a user (as a guest or anonymous)?

tscibilia commented 3 years ago

Keep up the great work, I'm adding to the bounty as I am not a developer and I'd love to see this implemented. 👍 https://www.bountysource.com/issues/61503906-add-ability-to-join-public-calls-without-an-account

sudwhiwdh commented 3 years ago

Are there any safety-critical aspects to consider when introducing such an enhancement?

Is someone currently working on the implementation of #261 (comment) that has been brought into the discussion? Right now it looks like it's not on the roadmap for Talk 9 for Android.

And I'm confused why the Talk version for Android doesn't follow the version numbers for Spreed and iOS.