Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

☎️ SIP dial-out #10346

Closed
2 of 4 tasks
nickvergessen opened this issue Aug 24, 2023 · 11 comments
Closed
2 of 4 tasks

☎️ SIP dial-out #10346

nickvergessen opened this issue Aug 24, 2023 · 11 comments

Comments

@nickvergessen
Copy link
Member

nickvergessen commented Aug 24, 2023

How to use GitHub

  • Please use the 👍 reaction to show that you are interested into the same feature.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Currently only SIP dial-in is supported.
The idea is to extend this with 2 bits:

  • Allow users to call "phone numbers"
  • Allow admins to assign phone numbers to users so that when an outside person calls the number the user is being called in a Talk conversation

  • We need an input option for the phone number (using search, number pad might be required as well?)
  • Should rooms be cleared/hidden automatically?
  • Would the same number calling from inside and outside reuse the existing room (would allow to make notes in the chat)?

@github-project-automation github-project-automation bot moved this to 🧭 Planning evaluation (don't pick) in 💬 Talk team Aug 24, 2023
@nickvergessen nickvergessen moved this from 🧭 Planning evaluation (don't pick) to 📄 To do (~10 entries) in 💬 Talk team Aug 24, 2023
@jancborchardt
Copy link
Member

For reference:

@nickvergessen
Copy link
Member Author

cc @fancycode for more details and input

@nickvergessen nickvergessen added this to the 💙 Next Major (28) milestone Aug 24, 2023
@nimishavijay nimishavijay self-assigned this Aug 29, 2023
@nickvergessen nickvergessen changed the title SIP dial-out ☎️ SIP dial-out Aug 29, 2023
This was referenced Aug 29, 2023
@jancborchardt
Copy link
Member

@fancycode @nickvergessen do you have more input and requirements? Would be helpful so @nimishavijay knows more about what needs to be included (and what can be omitted).

@fancycode
Copy link
Member

Hi @jancborchardt, @nickvergessen added some notes in the issue itself, here are some initial ideas from my side:

  • Allow calling participants from the list (either with a number from their profile, from the address book or a dial-pad).
  • Allow calling external participants (from address book or dial-pad).
  • Outgoing calls should show their status (ringing, busy, connected, error, etc.) somewhere (the participant list?).
  • Which number format should be allowed to dial? The SIP bridge will expect a full E.164 number (e.g. +49123456789) but we might allow users to only dial a part like you would do with a regular landline phone (e.g. omit the country and/or area code).

@fancycode
Copy link
Member

Also dial-out should be possible both from an existing room or to create a new room. To be decided if the new room should be 1-1 (user and called person) or a regular room where you could add more participants (or call other phones).

@nimishavijay
Copy link
Member

nimishavijay commented Sep 13, 2023

One main question is have is who is the target audience for this feature? I couldn't find many examples of who is using this, eg. if a customer requested this, what is the use case?

Some more feature-specific questions from my side:

  • Is the "state" of previous calls known (missed call, outgoing, incoming)?
  • Is there any distinction between NC Talk calls and SIP calls for the user? (example: A and B are users on Talk, what is the difference if A calls B via phone number on Talk and A clicks on Start call with B? Is video calling/muting/etc all possible? Will B get notified on their phone or on Talk?)

Allow admins to assign phone numbers to users so that when an outside person calls the number the user is being called in a Talk conversation

  • It is very likely that a user wants to save an external number that they dial often, is that possible?
  • Are only admins allowed add a phone number to a user or can users also do that? What does the process of adding a number look like? Is there any verification, etc?
  • Can one user have multiple phone numbers?

@nickvergessen
Copy link
Member Author

Is the "state" of previous calls known (missed call, outgoing, incoming)?

Incoming we don't have, the others should be indicated by the system message?

Is there any distinction between NC Talk calls and SIP calls for the user? (example: A and B are users on Talk, what is the difference if A calls B via phone number on Talk and A clicks on Start call with B? Is video calling/muting/etc all possible? Will B get notified on their phone or on Talk?)

Phone calls are very different to Talk calls. They can be part of each other but the short answer is No to all your questions.

If a phone number is called that phone will ring. If other people are also in the call, they will be notified up front by the call.

It is very likely that a user wants to save an external number that they dial often, is that possible?

You would just reuse the room that was created on the first call

Allow admins to assign phone numbers to users so that when an outside person calls the number the user is being called in a Talk conversation

This apparently is SIP-dialin and not part of the steps we will implement in this round.

Are only admins allowed add a phone number to a user or can users also do that? What does the process of adding a number look like? Is there any verification, etc?

This is luckily out of scope for now. But yeah it's "SIP configuration" and would happen outside of Nextcloud.


Design questions …

… that came up when I talked with Jojo working on the API

  • Should audio be played while waiting (normal waiting sounds)? Maybe only in single rooms?
  • Should only call phones automatically if there is only one? To avoid duplicate voice mail, call center audio, etc. playing on top of each other

@nimishavijay
Copy link
Member

nimishavijay commented Oct 16, 2023

So high-level design and flow can be like this:

Directly calling numbers

image
image
image
image

Chances are, a person either dials phone numbers all the time or never. So there should be an easy way to dial new phone numbers.

  • It can be found along with "Create new conversation" and "Join open conversation"
  • Clicking on it opens a modal with a focused input field where you can type a number with your device keyboard.
  • On mobile devices this modal should open with the input field focused and open the number-only keyboard (the one that opens at the 2FA step when you are logging into NC on mobile, for eg.)
  • As a fallback though there could be a icon that opens another keyboard, but I highly doubt this will be used as I imagine 90% of people would copy paste the number, or use the keyboard to type it out
  • There would also be a "Call" button, and clicking on that would directly create a room, navigate to it and start a call. Device check is not necessary as video would be off.

Questions and future ideas:

  • Is it feasible to show contacts here?
  • Enhancement for the future: show recently dialed numbers

Group conversations with numbers

image
image
image
image

  • It would be nice to create group conversations with some of your colleagues and some external number. So the flow for this easier, just the same as creating a normal group conversation but the option to input phone numbers
  • Phone numbers can also be added to existing groups by typing the number in the participant list

In the call

image
image
image

  • When you are connecting to a 1on1 call with a phone number, the status of the call should be conveyed through the icon and message at the center (connecting, ringing, connected, etc)
  • In the sidebar participants list, show the status on the subline of the phone number
  • When they have connected successfully show a phone icon, similar to the video icon in a normal group call
  • For group calls where the phone number is dialed, sort the phone numbers to the top of the list (so we can easily see the status)

Should audio be played while waiting (normal waiting sounds)? Maybe only in single rooms?

Since we communicating it visually, we could simply follow the sound settings of the user. if they have checked "play sounds when someone joins or leaves a call" then we can play the same sound.

Should only call phones automatically if there is only one? To avoid duplicate voice mail, call center audio, etc. playing on top of each other

Really good point! We could do something like this: If a conversation contains at least one phone number

  • If conversation has only one phone number and no one else, call immediately
  • Else the phone numbers need to be added explicitly (todo: UI for waiting screen when there are phone numbers, ideas so far: show a popover and add from participant list, show ph num cards in waiting screen and participant list, show message and add from participant list)

Entering numbers after calling a phone number

image
image
image

Some cases when there is an automated message on the other end of the line requiring a number to continue (eg. "For English press 1", etc) we need a way to enter those numbers.

  • There could be a "floating" keypad which allows you to send something to that phone number
  • It is shown when you click on the "Send a number" option in the 3 dot menu
  • There could also be a dialpad icon in the input field in the chat, which shows the floating keypad
Old specs: - [ ] This could be done via chat by @ mentioning the number.
- [ ] There is also a hint given in the 3 dot menu of a phone number participant, and clicking on this also takes you to the chat with `@ [phone number]` already filled in in the input.
- [ ] so when you are in a call with a phone number, typing @ in the chat should show the phone number sorted up top

More details

Image

  • Dial pad can be similar in style to a secondary button, with some adjustments (border radius should be a pill but rather)
  • Make sure it is keyboard navigable

Image

  • Nice-to-have enhancement: have a country code selector near the input field. Purpose: to let people know what country code is by default, to remind people to change country code if it is not the same as the default, and to make it easy to change the country code. This would really useful for eg. for our sales colleagues who are frequently making international calls
  • In the input field if a number is pasted with the country code it would automatically be adjusted in the country code selector

Questions from my side:

  • It is very difficult to keep track of multiple phone numbers in one conversation, so it would be nice to have a way to add a name to a number. In 1on1 conversations it could simply be the name of the conversation for now, in group conversations it gets more tricky. Any ideas what we could do?
  • is there any way to validate the numbers? for eg. could I omit the area/country code while typing? do we need an area/country code selector?
  • are there any other phone-specific actions we would want support for (for eg. "Pause" on Android)

Some of these cases were not discussed in the coordination call, so what do you think? @nickvergessen @fancycode @jancborchardt @Antreesy :)

@nickvergessen
Copy link
Member Author

Entering numbers after calling a phone number

This could be done via chat by @ mentioning the number.

The numbers need to be sent live directly to the HPB, not via chat to the Nextcloud server.

Questions from my side

It is very difficult to keep track of multiple phone numbers in one conversation, so it would be nice to have a way to add a name to a number. In 1on1 conversations it could simply be the name of the conversation for now, in group conversations it gets more tricky. Any ideas what we could do?

Name is distinct from the phone number, so we could allow letting others update it. Also always thinking about this for things like webinars where moderators should be able to adjust the name of guests in case they are violating some guidelines.

is there any way to validate the numbers? for eg. could I omit the area/country code while typing? do we need an area/contry code selector?

You can omit the country code when the instance has a default country code set. But if that is not the one you'd like to call, we will call to a wrong country, so I would heavily recommend to enforce it.

@nimishavijay
Copy link
Member

The numbers need to be sent live directly to the HPB, not via chat to the Nextcloud server.

After a design review call, we decided that it is less confusing after all if we just use a number pad and not involve the chat in this so I added the updated mockups and specs in the comment

@nimishavijay nimishavijay moved this from 📐 Design phase to 🏗️ At engineering in 🖍 Design team Oct 19, 2023
@nickvergessen
Copy link
Member Author

MVP implemented, closing the meta ticket for now

@github-project-automation github-project-automation bot moved this from 🏗️ At engineering to 🎉 Done in 🖍 Design team Oct 30, 2023
@github-project-automation github-project-automation bot moved this from 📄 To do (~10 entries) to ☑️ Done in 💬 Talk team Oct 30, 2023
This was referenced Dec 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Archived in project
Development

No branches or pull requests

4 participants