We need to implement functionality that Admin should be able to mute anyone in channel, for this we have used your function
muteRemoteAudioStream(uid, toMute)
We also want to show everyone that this user has been muted... But for now we are not getting any callback in method
onRemoteAudioStateChanged(uid, state, reason, elapsed)
I' m using agora voice sdk version : 3.3.0 (implementation 'io.agora.rtc:voice-sdk:3.3.0')
Kindly help us on this.
Thanks in advance
Please define and create the IRtcEngineEventHandler when initializing the RtcEngine instance. This will make sure that onRemoteAudioStateChanged be called when the remote audio state change (e.g. remote user mute).
Agora currently does not provide similar API for remotely mute any users. But you can achieve this by using Agora RTM (Real Time Messaging) SDK. You can send a signal from the "Admin" user to the remote users. When the remote users receive the message, they can call muteLocalAudioStream method to mute themselves.
Here is the guide for RTM SDK: https://docs.agora.io/en/Real-time-Messaging/messaging_android?platform=Android
Related
Greetings to fellow developers,
I am working on a project where I have to display a functional video call between two users. For reference, I have been following this video https://www.youtube.com/watch?v=v9ngriCV0J0
which has given a step-by-step explanation for establishing a video call between two users.
However, the only issue is that the video is having a Firebase backend. Hence, whenever a caller creates a call model with sender and recipient Ids, the recipient immediately receives the same data and a call is established. Whereas, I am using Node/Express backend (manual API calls for updating fetching data) which makes it extremely difficult to receive the required call data from the receiver's end as soon as the caller sends it to the backend. Also, it will be inefficient to listen for fetching the call data the whole time.
I will be very grateful to all of you if you can help me find a working approach so that the receiver can fetch the required call data as soon as the caller creates it in the backend for establishing a video call from separate devices.
Here's my code
https://pastebin.com/AurJnG27
/***pubspec.yaml dependencies***/
dependencies:
flutter:
sdk: flutter
http: ^0.12.0+2
provider: ^4.3.3
socket_io_client: ^0.9.9
permission_handler: ^3.0.0
agora_rtc_engine: ^1.0.8
/***pubspec.yaml dependencies***/
Please let me know if any further information is required from my side. Any feedback for code improvisation (if you feel like it) is also very appreciated.
You're getting that error because of an incorrect or expired token that you might be using. Firstly, I will suggest shifting to the latest version of the Agora SDK and then build your application.
Now, if you're just testing out the platform then from your Agora dashboard you can go ahead and generate a new App ID and select the testing mode which will disable token. So in your joinChannel() method you can pass null for the token value.
But if your application is live or is in production then go ahead and select the secured mode from your Agora dashboard. Then you will have to generate a token server from a deployed server, you can read more about it here.
Now, coming to the Firebase part. You can actually make this process much simpler by using the Agora RTM SDK. Which allows you to send messages, through this you can send peer message about the call details and hence refer it while making a call. You can have a look at this blog which shows how you can use the RTM SDK to do the same: https://www.agora.io/en/blog/building-your-own-audio-streaming-application-using-the-agora-flutter-sdk/
If you're interested you can have a look at this sample code given here which will help you setup a proper video calling application.
I will also recommend you to join the Agora Slack Channel where you can get help from other Agora developers.
We are building calling app in Android using Agora SDK. We checked this samples :
https://github.com/AgoraIO/Basic-Video-Call
in our app, 2 users can do video call. We are using this sample : https://github.com/AgoraIO/Basic-Video-Call/tree/master/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1
For the group call, we followed this sample : https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Android
We are trying to implement group call in this way :
User-A calls User-B
Both gets connected (using https://github.com/AgoraIO/Basic-Video-Call/tree/master/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1)
User-B can able to invite more users in a ongoing video call.
Does this possible? Please suggest us a correct way?
For a call invitation scenario, you will need to leverage some sort of signaling solution. Agora.io provides the RTM SDK that you can use alongside the Agora RTC SDK. You can refer to Agora's guide to see how the implementation works: https://docs.agora.io/en/Real-time-Messaging/rtm_invite_android?platform=Android
This is how you would actually create the invitation
void inviteCall(final String peerUid, final String channel) {
// Creates LocalInvitation
LocalInvitation invitation = RtmCallManager.createLocalInvitation(peerUid);
invitation.setContent(channel);
// Sends call invitation
RtmCallManager.sendLocalInvitation(invitation);
}
You will also need to use something like Android's ConnectionService to be able to implement call notification. Here's an guide on call notification: https://docs.agora.io/en/Real-time-Messaging/faq/call_invite_notification
I want to make unbound call using twilio. Like I am dialling number from twilio voice start demo and receiving call on dial number but can't talk. There is only cassette speaking on caller and receiver side both.
I have done below things
1) Create backed api using PHP for get access token of my twilio account which help of that I can make call.
2) Create on makeCall php file and set it to TwiML Apps.
3) Added my number in verified numbers in twilio panel as I have trial account of twilio.
Problem is when I am calling through quick start application it is listening me one cassette but can talk with both receiver and caller.
Any one can help me on this then it would be helpful.
Thanks in advance!
Twilio developer evangelist here.
So, you've completed the quickstart and managed to make a call and get a recorded response.
That response was created with TwiML, specifically <Say>. The PHP probably looks like this: $response->say("Thanks for calling!");
In order to connect to another caller, you need to use <Dial>. Replace the above say method with:
$response->dial("Number you wish to dial");
And try again, you should be connected through to the number you enter in the code.
Check out the overview on TwiML and the voice tutorial section in the Twilio docs for more on how to control calls with TwiML.
I'm having a problem with the lite version of messenger (android only)
This version of the application does not support bot messages with templates or buttons (including the get_started button)
In my case this is an example:
I could not find a parameter in the webhooks to provide the user's platform.
So I have to ask the user: do you use the lite version?
And then set a different flow.
But this means that I must also give the possibility to disable the lite mode when browsing from the web or from the non-lite application (to guarantee a better user experience)
Does Facebook Messenger Bot provide information about the channel where the message was originated ?
This information is not provided via webhook, currently. The closest you can get is detecting user agent in the webview.
A not ideal but doable option would be to have something like a 'Switch to Lite' button in the persistent menu
One way to identify where message event originates from is to use the payloads. You can specify a unique payload when setting up your bot and check what you receive to react on. get_started, persistent_menu, quick_replies have a payload field that you can set.
{
"get_started":{
"payload":"<GET_STARTED_PAYLOAD>"
}
}
I was using twilio client android sdk for video call in my android app.I had integrate the twilio android client api for the video call and video call goes smoothly.I just want to know how can i get the call statistics or call usage detail after completion of any video call ?
I had gone through the Twilio Docs but didn't find anything...kindly suggest me the solution if anyone has done..
As of yet, Twilio Video does not have a REST API.
You can get the data which you seek from logs in the console:
https://www.twilio.com/console/logs