Giter VIP home page Giter VIP logo

react-native-twilio-programmable-voice's People

Contributors

aniravi24 avatar brianhiss avatar dabit3 avatar dakenf avatar enaluz avatar fabriziomoscon avatar fmonsalvo avatar gitstud avatar gongdao123 avatar jdegger avatar kirin-p avatar lonnylot avatar odedsoluto avatar pagebakers avatar slootzky avatar vpodolyan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-twilio-programmable-voice's Issues

iOS - error The operation couldn’t be completed. (com.apple.CallKit.error.requesttransaction error 4.)

RN 0.45.0
this lib 2.11.1
experienced on iPhone 6
app running in foreground
iOS lib pod 'TwilioVoice', '=2.0.0-beta14'

EndCallAction transaction request failed: The operation couldn’t be completed. (com.apple.CallKit.error.requesttransaction error 4.)

to reproduce this:

  • call a PSTN number from the app where the lib is installed
  • let the callee accept the call
  • the caller hangs the call up.

Although this represent an error in the log, I haven't seen crashes or other side effect.

related to #30

iOS - handler is not a function. (In 'handler(rtn)', 'handler' is undefined)

I get this issue running on both iOS Simulator and on iPhone 6. This occurs immediately once the call starts ringing. This error is dismissible, and does not cause the app to crash. I am adding all of the necessary event listeners to the TwilioVoice Instance.

This error is originating from line 88 in index.js

Thanks in advance!

Documentation - initWithTokenUrl and configureCallKit

RN: "0.47"
package v: "3.2.0"

I can't really understand the documentation, in my use case I only need to make calls via userName > userName.
Am I obligated to configure CallKit? If so, whats the appName param?
Also, the initWithTokenUrl function, expects the get Token url, am I correct? What object should the server return?

I already tried to return a {token: '...'} a {'....'}and an {accessToken: '...'}. But I get the following error everytime:
An error occurred while registering: Invalid access token header;

Also, I can successfully login using initWithToken but can't seem to connect to anyone. It says "calling number {identity}" on xcode console but none of the events get trigger nor in my client nor in the other device.

Thanks in advance.

Crash when calling and accessToken is null

RN 0.38
this lib 0.2.0
API level 22 Android 5.1.1
device SM-G925F

Exception java.lang.IllegalArgumentException: accessToken cannot be null
com.twilio.voice.VoiceClient.call (VoiceClient.java:108)
com.hoxfon.react.TwilioVoice.TwilioVoiceModule.connect (TwilioVoiceModule.java:556)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke (BaseJavaModule.java:318)
com.facebook.react.cxxbridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:158)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:31)
android.os.Looper.loop (Looper.java:145)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run (MessageQueueThreadImpl.java:196)
java.lang.Thread.run (Thread.java:818)

Should be possible call using emulator?

What version of React Native are you running?
0.50.3

What version of react-native-twilio-programmable-voice are you running?
3.7.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?
Android Emulator - Nexus 6

Is your app running in foreground, background or not running?
Foreground

Is there any relevant message in the log?

{
  "name": "error",
  "group": "connection",
  "timestamp": "2017-12-27T19:07:24.165Z",
  "level": "INFO",
  "private": false,
  "payload_type": "application/json",
  "publisher": "twilio-voice-android",
  "publisher_metadata": {
    "client_address": "FEC0::5054:FF:FE12:3456",
    "os_name": "android",
    "os_version": "7.1.1",
    "device_model": "Android SDK built for x86",
    "device_vendor": "unknown",
    "device_type": "Android SDK built for x86",
    "cpu_architecture": "x86"
  },
  "payload": {
    "timestamp_ms": 1514401644161,
    "temp_call_sid": "TAND2cdeb07a-7a4a-4bee-a4dd-d95c0afd5fae",
    "sdk_version": "2.0.0-beta24",
    "platform": "android",
    "direction": "OUTGOING",
    "code": 31006,
    "message": "Audio device error pjsua_call_make_call(): No suitable sound capture device (PJMEDIA_ENOSNDREC)"
  }
}

I'm just playing around and I would like to know if this should be working on emulator, because I can only make this work on device.

iOS connects to a call, but emits and receives no audio

Please include following information for better support
I have 'Voice over IP' enabled and my iOS app connects to a voice call, however I cannot hear anything or emit any sounds to the other side. I have microphone usage 'allowed'. The apple 'call view' does not appear, should it? The call is registered under Twilio as 'In Progress'. It just seems that the audio is disabled.

What version of React Native are you running?
0.47.1
What version of react-native-twilio-programmable-voice are you running?
2.8.0
What device are you using? (e.g iOS9 simulator, Android 6 device)?
iPhone 6

Is your app running in foreground, background or not running?
foreground

Is there any relevant message in the log?

If using iOS, which pod version are you using?
1.3.1

Step to reproduce
Connect to a Twilio address.

Advanced:
Have you tried adding break point in native handlers and see the logs printed?
can share a project with issue?
Did you try to reinstall the pods completely?

The more context you provide around this issue the faster the community can help you.

Add CallKit performPlayDTMFCallAction

The method provider:performPlayDTMFCallAction is called when the provider performs the specified play DTMF call action.
Adding this method would allow us to catch Callkit's keypad. I've been testing the following implementation:

- (void)provider:(CXProvider *)provider performPlayDTMFCallAction:(CXPlayDTMFCallAction *)action {
  if (self.call && self.call.state == TVOCallStateConnected) {
    RCTLogInfo(@"SendDigits %@", action.digits);
    [self.call sendDigits:action.digits];
  }
}

What do you think?
Cheers
Esteban

Can't accept the call when device is locked

What version of React Native are you running?
0.48.4

What version of react-native-twilio-programmable-voice are you running?
3.7.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?
Android 6.0.1 device

Is your app running in foreground, background or not running?
running in foreground and background

Is there any relevant message in the log?
No


Well, I don't think this is an issue, but I'm here looking for ideas. The main issue is that when I receive the call while the device is locked, I don't have the accept button; I see the banner notification but without the accept/reject options.

Due this main issue, I'm trying to follow this post, which gives the idea of build a native screen for Android locked screen cases.

I did not finish this task, but I already have done the screen and when the app it's open I'm able to send notification to the react-native. You can see the code here.

Another problem is, when I emit the handleIncomingCall my showUnlockScreen doesn't work, but if I change, removing handleIncomingCall; the screen will be shown without notification banner.

So my question is; do you have any idea about how create this screen keeping the current notification working?

iOS caller Id and notifications

What version of React Native are you running? 0.49
What version of react-native-twilio-programmable-voice are you running? ^3.2.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? iOS 11 device

Hey, I'm currently able to make and receive a call with CallKit configured. However digging the docs and even the code I was not able to understand how can I change the received caller name. FE: I receive a call from twilio by the user "Rui", however to receive this callerId as a string I have to prepend "client:" to the string, or the caller Id will treat it like a number and convert the name "Rui" to "784".
The thing is, with "client:Rui" on the twilio server as callerId the iOS call screen will display: "client:Rui", my question is, how can I trim this "client:"?
Also, can't I just display a call notification instead of the popup caller screen? So when I press the notification it'll open the app with my custom screen.

P.S: I have limited understanding of ObjC / Java, I'm kinda struggling atm
Thanks for the great package! Also, your app deserves way more downloads.

iOS callkit screen disappears right after call accepted

Please include following information for better support

What version of React Native are you running? 0.48.2
What version of react-native-twilio-programmable-voice are you running? 3.2.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? iOS11 device
Is your app running in foreground, background or not running? foreground
Is there any relevant message in the log? no
If using iOS, which pod version are you using? 'TwilioVoice', '=2.0.0-beta13'

Step to reproduce

  1. Made call to device using TwilioVoice.connect({To:'user'});
  2. Accepted call on user device callkit screen
  3. call is active in background and application screen shows up. cannot switch to call screen

Hi All,

I'm having some trouble with managing the call once it's connected. After I accept the call on my screen, the call screen goes into the background and my app screen shows up. iOS shows me there is an active call and I can hear voices, but I cannot bring up the call screen to to hang up the call. Has anyone come across this or have any example code I can have a look at?

Thanks alot

Plugin with id 'com.google.gms.google-services' not found.

My main question is this: is apply plugin: 'com.google.gms.google-services' needed in all cases, or only when specifying a specific play-service-gcm version?


Please include following information for better support
React Native: 0.33.0

react-native-twilio-programmable-voice: 0.2.1

Device: Samsung Galaxy S7 (Genymotion)

Error:

  • What went wrong:
    A problem occurred evaluating project ':app'.

Plugin with id 'com.google.gms.google-services' not found.

Android Notification not triggered when app is closed / foreground

What version of React Native are you running? 0.49
What version of react-native-twilio-programmable-voice are you running? ^3.2.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? Android 4,5,6 device

I'm currently using react-native-fcm for handling android notifications, the thing is.
I'm able to receive chat notifications (also from twilio services), I also receive notifications sent by the Firebase Console and I'm able to trigger voip notifications (using react-native-fcm listening events) when my app is either open or in foreground.
However, I'm not receiving any android push notification when the app is closed or in foregroud (as desired). Any clue whats the problem?

P.S: I've correctly implemented this on iOS with callkit..

Thanks in advance.

Android crash in reception because conflicting firebase version

Using RN 0.45.0
and "react-native-twilio-programmable-voice": "^2.8.0"

Android crash log

Fatal Exception: java.lang.NoSuchMethodError: No static method zzabU()Lcom/google/firebase/iid/zzg; in class Lcom/google/firebase/iid/zzg; or its super classes (declaration of 'com.google.firebase.iid.zzg' appears in /data/app/com.hoxfon.Hoxfon-1/base.apk:classes32.dex)
       at com.google.firebase.messaging.FirebaseMessagingService.zzD(Unknown Source)
       at com.google.firebase.iid.zzb.onStartCommand(Unknown Source)
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3451)
       at android.app.ActivityThread.-wrap21(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1632)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6290)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Apparently this happens when using conflicting version of firebase.
For example I found out that the third party libraries of my app were both using:
com.google.firebase:firebase-messaging:10.2.4
com.google.firebase:firebase-messaging:10.2.6

I used this command to find out which libraries were using each version:

./gradlew -q app:dependencyInsight --dependency firebase --configuration compile

iOS events connectionDidConnect, connectionDidDisconnect use to and from instead of call_to and call_from

In version 3.2.0 the parameters for:

  • connectionDidConnect

  • connectionDidDisconnect
    are different between iOS and Android.

  • to is used instead of call_to

  • from is used instead of call_from

As a temporary fix you can migrate the parameters in your app:

if (Platform.OS === 'ios') {
  if (params.to) {
    params.call_to = params.to
    delete params.to
  }
  if (params.from) {
    params.call_from = params.from
    delete params.from
  }
}

Also on iOS the event connectionDidDisconnect uses the parameter error instead of err
As a temporary fix you can migrate the parameters in your app:

if (Platform.OS === 'ios') {
  if (params.error) {
    params.err = params.error
    delete params.error
  }
}

`TwilioVoice.connect` was not making call....

Please include following information for better support

What version of React Native are you running? --0.51.0
What version of react-native-twilio-programmable-voice are you running? 3.7.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? ios 10
Is your app running in foreground, background or not running? foreground
Is there any relevant message in the log?
If using iOS, which pod version are you using?

Step to reproduce

Not sure why TwilioVoice.connect has no action and no listener was triggered. I didn't setup quick start up app and was able to make call from app. Can you help to review what I did wrong the the following code? Thank you very much!!!

`

import React, { Component } from 'react';
import { Text, TextInput, View, Button, StyleSheet, Image } from 'react-native';
import TwilioVoice from 'react-native-twilio-programmable-voice';

async function initTelephony() {
try {
const result = await fetch('https://4f155c65.ngrok.io/token');
let accessToken = JSON.parse(result._bodyText);
console.log('token:'+ JSON.stringify(accessToken));

    const success = await TwilioVoice.initWithToken(accessToken.token);

    return success;
} catch (err) {
    console.log(err);
}

}

class Login extends Component {
constructor(props) {
super(props);
}

async componentWillMount() {
    try {
        let result = await initTelephony();
        TwilioVoice.addEventListener('connectionDidConnect', () => {
            console.log('>> TwilioVoice, Call connected.');
        });
        TwilioVoice.addEventListener('connectionDidDisconnect', () => {
            console.log('>> TwilioVoice, Call disconnected.');
        });
        TwilioVoice.addEventListener('deviceReady', function() {
            console.log('deviceReady');
            // no data
        });
        TwilioVoice.addEventListener('deviceNotReady', function(data) {
            console.log('deviceNotReady');
            // {
            //     err: string
            // }
        });
        TwilioVoice.addEventListener('callRejected', function(value: 'callRejected') {
            console.log('callRejected');
        });
    } catch (e) {
        console.log('error token:', e);
    }
}

render() {

    return (
        <View style={styles.container}>
            <Button style={styles.button}
                    onPress={() => {
                        // console.log('state:'+this.state.success.initialized);
                        // if (this.state.success && this.state.success.initialized) {
                        try {
                            console.log('>> TwilioVoice, Calling...');
                            TwilioVoice.connect({To: '+6049708409'});
                        } catch (e) {
                            console.log('>> error:', e);
                        }
                        // }
                    }
                    }
                    title="call"
            />
        </View>
    )
}

}
const styles = StyleSheet.create({
container: {
flexDirection: 'column',
flex: 1,
alignSelf: 'stretch',
justifyContent: 'center',
alignItems: 'center'
},
button:{
marginTop: 20,
fontSize: 36,
justifyContent: 'space-between'
}
})

module.exports = Login;

`

Question about requestPermission method

In this module, TwilioVoice.requestPermission(GCM_sender_id) is available as a method.

Is this method needed to initialize the application to send calls?

Also, where can GCM_sender_id be accessed?

Thanks for your help.

Got RNTwilioVoice.m:11:9: fatal error: module 'TwilioVoice' not found when running react-native run-ios

Please include following information for better support

What version of React Native are you running? -- 0.51.0
What version of react-native-twilio-programmable-voice are you running? --3.7.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? iOS 8.1 simulator
Is your app running in foreground, background or not running?
Is there any relevant message in the log?
If using iOS, which pod version are you using?

Step to reproduce

/Users/jun/github/RSPush/node_modules/react-native-twilio-programmable-voice/ios/RNTwilioVoice/RNTwilioVoice.m:11:9: fatal error: module 'TwilioVoice' not found
@import TwilioVoice;

1 error generated.



** BUILD FAILED **

Audio Error

Please include following information for better support

What version of React Native are you running?
0.47.2

What version of react-native-twilio-programmable-voice are you running?
2.8.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?
iOS10.3

Is your app running in foreground, background or not running?
foreground

Is there any relevant message in the log?

<Warning>: 'token:', { identity: 'IgnominiousCameronNevis', token: '...' }
<Warning>: CallKit Initialized
<Warning>: providerDidBegin
<Notice>: '_deviceReady', undefined
<Warning>: Calling phone number ...
<Error>: [avas] AVAudioSessionUtilities.h:112:GetProperty: AudioSessionGetProperty ('acat') failed with error: '!ini'
<Error>: [avas] AVAudioSessionUtilities.h:125:GetProperty_DefaultToZero: AudioSessionGetProperty ('acat') failed with error: '!ini'
<Error>: [avas] AVAudioSession.mm:852:-[AVAudioSession category]: No valid string for category: 0
<Error>: [avas] AVAudioSessionUtilities.h:112:GetProperty: AudioSessionGetProperty ('mode') failed with error: '!ini'
<Error>: [avas] AVAudioSessionUtilities.h:125:GetProperty_DefaultToZero: AudioSessionGetProperty ('mode') failed with error: '!ini'
<Error>: [avas] AVAudioSession.mm:1575:-[AVAudioSession mode]: No valid string for mode: 0
<Warning>: StartCallAction transaction request successful
<Warning>: provider:performStartCallAction
<Warning>: Ignoring assertion request named "com.apple.AddressBook.Search" from <BSProcessHandle: 0x7fbaccd0b920; callservicesd:3848; valid: YES> because process { pid 3848; bundleID (null) } is unknown.
    com.apple.CallKit.CallDirectory[4233]
<Error>: [Default] Unable to initialize CXCallDirectoryStore for reading: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “CallDirectory” in the folder “Library”." UserInfo={NSFilePath=/var/mobile/Library/CallDirectory, NSUnderlyingError=0x7fe83a50c620 {Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied"}}
<Error>: [Default] Error retrieving call directory first identification entry for phone number ...: Error Domain=com.apple.CallKit.error.calldirectorymanager Code=0 "(null)"
<Warning>: provider:didActivateAudioSession

If using iOS, which pod version are you using?

Step to reproduce

I'm just setting the token and making a call.

fetch('https://.../token')
.then((response) => response.json())
.then((response) => {
Twilio.initWithToken(response.token)
Twilio.initWithTokenUrl('https://.../token')
Twilio.connect({
      To: number
    })

Advanced:
Have you tried adding break point in native handlers and see the logs printed?
can share a project with issue?
Did you try to reinstall the pods completely?

The more context you provide around this issue the faster the community can help you.

Crash when checking google play service availability and 9.8 is installed

RN 0.38
this lib 0.2.2
Android 5.1.1 and 7.0.0
Google play service:

Exception in native call
 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
     at com.google.android.gms.common.GoogleApiAvailability.zza(Unknown Source)
     at com.google.android.gms.common.GoogleApiAvailability.getErrorDialog(Unknown Source)
     at com.google.android.gms.common.GoogleApiAvailability.getErrorDialog(Unknown Source)
     at com.hoxfon.react.TwilioVoice.TwilioVoiceModule.checkPlayServices(TwilioVoiceModule.java:678)
     at com.hoxfon.react.TwilioVoice.TwilioVoiceModule.startGCMRegistration(TwilioVoiceModule.java:168)
     at com.hoxfon.react.TwilioVoice.TwilioVoiceModule.<init>(TwilioVoiceModule.java:138)
     at com.hoxfon.react.TwilioVoice.TwilioVoicePackage.createNativeModules(TwilioVoicePackage.java:28)
     at com.facebook.react.XReactInstanceManagerImpl.processPackage(XReactInstanceManagerImpl.java:954)
     at com.facebook.react.XReactInstanceManagerImpl.createReactContext(XReactInstanceManagerImpl.java:878)
     at com.facebook.react.XReactInstanceManagerImpl.access$600(XReactInstanceManagerImpl.java:110)
     at com.facebook.react.XReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(XReactInstanceManagerImpl.java:214)
     at com.facebook.react.XReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(XReactInstanceManagerImpl.java:193)
     at android.os.AsyncTask$2.call(AsyncTask.java:292)
     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     at java.lang.Thread.run(Thread.java:818)

Multiple failed push credential requests per call.

Please include following information for better support

What version of React Native are you running? 0.51.0
What version of react-native-twilio-programmable-voice are you running? 3.10.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? Simulator ios10, ios10, android device 6.0.1
Is your app running in foreground, background or not running? App is in foreground.
Is there any relevant message in the log? I'm not sure what's relevant yet.
If using iOS, which pod version are you using? 2.0.0

Step to reproduce
Call from iOS device to Android device.

Advanced:
Have you tried adding break point in native handlers and see the logs printed? Yes, but I'm not sure what's relevant.
can share a project with issue? Not really.
Did you try to reinstall the pods completely? Yes, I've done this more times than I can count.

screen shot 2018-01-24 at 5 59 22 pm

I'm seeing multiple (5+) failed requests in the Twilio debugger when only one call is initiated.
screen shot 2018-01-24 at 5 58 52 pm
It's only empty when I call from iOS to Android. Android to iOS doesn't trigger the empty credential errors. iOS simulator to iOS device doesn't trigger it either. I'm now testing calls between real devices because the simulator seems to crash a lot and not accept incoming calls. Everything is client to client connection.

This is what I see in the call log. One call results in an incoming call from the initial client, then the Twiml results in an outgoing dial that connects both clients.
screen shot 2018-01-24 at 5 57 43 pm

My guess is that old tokens are being triggered because I've deleted those credentials that are missing and the server isn't serving those tokens anymore. I've restarted the Node server many times.

I'm attempting to use VoIP Push Notifications to handle the incoming connection. I've yet to see a notification on iOS. I see the didReceiveIncomingPushWithPayload get triggered, but no notification appears, and I don't see any errors. Android notifications work fine.

I tried downgrading to 2.0.0-beta15, but my Android notifications stopped working. I don't know where else to look to make this work properly.

I have two server routes to deliver push tokens for iOS and Android. I was planning to add token storage in React Native and handle the refresh check there, but I wanted to solve this problem first.

My client JS looks like this... it used to be identical to the recommended docs, but that was causing me issues, and this seems to be working - for the most part.

async function initTelephony(uid) {
    try {
        const url = `${TWILIO_APP_URL}/accessToken?identity=${encodeURIComponent(uid)}&platform=${encodeURIComponent(platform)}`
        const request = new Request(url)
        const accessToken = await getAccessTokenFromServer(url)
        TwilioVoice.initWithToken(accessToken)

        if (Platform.OS === IOS){ 
            TwilioVoice.configureCallKit({
                appName:       'appname',                  // Required param
                imageName:     '',             // OPTIONAL
                ringtoneSound: '' // OPTIONAL
            })
        }
        else {
            requestMicrophonePermission() //this goes to React Native Android permissions
        }
        
    } catch (err) {
        console.log("init error: ", err)
    }
}

Here's the express path that Node is delivering.

(req, res) => {

        var resp = new VoiceResponse()
        const dial = resp.dial()
        res.writeHead(200, {
          'Content-Type':'text/xml'
        });
        dial.client({},req.body.To)
        res.end( resp.toString() )

Sometimes when a call connects I hear nothing but a loud noise - dunno if this is relevant or what to do about it besides initiate a new call.

  • Do iOS notifications work? I don't see any errors in Xcode or any notifications. I tried setting this up with a fresh CSR.
  • Should I be using initWithTokenUrl on iOS? It's my understanding that initWithToken should be the same cross platform.
  • Do I need to clear old tokens somewhere?
  • Where / How can I further debug the multiple failed notification requests?

differences between iOS and Android callbacks data

Hi,
I have notice that there're differences between iOS and Android callbacks data, for example:

  • iOS has 'to' and 'from' attributes in the connectionDidConnect event data instead of 'call_to' and 'call_from'
  • Android doesn't have the 'call_from' and 'call_to' in the connectionDidConnect event data
  • Android has a deviceDidReceiveIncoming event and iOS doesn't
  • iOS has a callRejected event and Android doesn't

is there any reason for those differences or I can add/fix them?

best regards,
Noam

Please include following information for better support

What version of React Native are you running?
0.46.3
What version of react-native-twilio-programmable-voice are you running?
2.8.0
What device are you using? (e.g iOS9 simulator, Android 6 device)?
iPhone 6/ Samsung S8
Is your app running in foreground, background or not running?
foreground
Is there any relevant message in the log?
If using iOS, which pod version are you using?
1.3.1

Call not working after some period of time (iOS)

Please include following information for better support

What version of React Native are you running? 0.50.4
What version of react-native-twilio-programmable-voice are you running? 3.5.0
What device are you using? (e.g iOS9 simulator, Android 6 device)? iOS 11 Device
Is there any relevant message in the log? No
If using iOS, which pod version are you using? 3.10.0

Step to reproduce

  • When the app is reloaded, or resumed after a some period of time the call doesn't work, if i logout and login the voice call works again.

  • Doesn't have the same issue with Android

Android custom Call parameters are not passed to Twilio

Using:

  • React Native 0.50.4
  • react-native-twilio-programmable-voice 3.10.0
  • Virtual Nexus 6P API 26 x86
  • App Running in foreground

Step to reproduce:

  • Fetch a fresh auth token when loading a component
  • Accept permissions to use microphone
  • bind a onPress callback to trigger a function call()
...
call = () => {
  try {
    TwilioVoice.connect({ 
        "To":  '+<my number in twilio>',
        "Foo": "Bar"
    })
  } catch(err) {
    // we never get here, thankfully
  }
}
  • press the button to start a call
  • Check twilio logs using the Call SID
  • See that none of the extra parameters I pass to TwilioVoice.connect method are present (To is present, all others are discarded. Other examples I have tried include "CallTo", "X-My-Custom-Header", "Foo", etc)

Output:

01-18 16:01:59.377 29676-29723/com.myapp D/RNTwilioVoice: connect params: { NativeMap: {"Foo":"Bar","To":"+<my number>"} }
01-18 16:01:59.384 29676-29723/com.myapp D/CallControlManager: CallControlManager created
01-18 16:01:59.418 29676-29898/com.myapp D/UserAgent: Creating UserAgent
01-18 16:01:59.419 29676-29898/com.myapp I/PJSIP: 16:01:59.419 os_core_unix.c !pjlib 2.5.1 for POSIX initialized
01-18 16:01:59.422 29676-29898/com.myapp D/PJSIP: 16:01:59.422 sip_endpoint.c  .Creating endpoint instance...
01-18 16:01:59.423 29676-29898/com.myapp I/PJSIP: 16:01:59.423          pjlib  .select() I/O Queue created (0x78fbcc04)
01-18 16:01:59.423 29676-29898/com.myapp I/PJSIP: 16:01:59.423 sip_endpoint.c  .Module "mod-msg-print" registered
01-18 16:01:59.423 29676-29898/com.myapp D/PJSIP: 16:01:59.423 sip_transport.  .Transport manager created.
01-18 16:01:59.423 29676-29898/com.myapp I/PJSIP: 16:01:59.423   pjsua_core.c  .PJSUA state changed: NULL --> CREATED
01-18 16:01:59.448 29676-29676/com.myapp D/CallControlManager: Ignoring network event, sticky broadcast
01-18 16:01:59.485 1486-29907/? I/AudioFlinger: AudioFlinger's thread 0xa7d93680 tid=29907 ready to run
01-18 16:01:59.492 29676-29898/com.myapp D/AudioTrack: Client defaulted notificationFrames to 258 for frameCount 776
01-18 16:01:59.521 29676-29898/com.myapp W/AudioTrack: Use of stream types is deprecated for operations other than volume control
01-18 16:01:59.524 29676-29898/com.myapp W/AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
01-18 16:01:59.549 1389-4268/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 30388505 , only wrote 30388320
01-18 16:01:59.566 29676-29898/com.myapp D/CallControlManager: Call  CALLING 
01-18 16:01:59.571 29676-29723/com.myapp D/Call: Received CALLING while in CONNECTING state
01-18 16:02:00.564 29676-29901/com.myapp D/CallControlManager: Call  EARLY 
01-18 16:02:00.565 29676-29723/com.myapp D/Call: Received EARLY while in CONNECTING state
01-18 16:02:00.566 29676-29901/com.myapp D/CallControlManager: onTransactionState received CA07f890fc727fee76e2498b49397d269e
01-18 16:02:00.859 29676-29901/com.myapp D/CallControlManager: Call CA07f890fc727fee76e2498b49397d269e EARLY 
01-18 16:02:00.859 29676-29723/com.myapp D/Call: Received EARLY while in CONNECTING state
01-18 16:02:00.860 29676-29901/com.myapp D/CallControlManager: onTransactionState received CA07f890fc727fee76e2498b49397d269e
01-18 16:02:04.888 29676-29901/com.myapp D/CallControlManager: Call CA07f890fc727fee76e2498b49397d269e DISCONNECTED 
01-18 16:02:04.888 29676-29723/com.myapp D/Call: Received DISCONNECTED while in CONNECTING state
01-18 16:02:04.995 29676-29898/com.myapp D/AudioTrack: stop() called with 87040 frames delivered
01-18 16:02:05.001 29676-29898/com.myapp D/UserAgent: Destroyed UserAgent
01-18 16:02:05.002 29676-29723/com.myapp D/InternalCall: Publishing event : disconnected-by-remote
01-18 16:02:05.011 29676-29723/com.myapp D/CallControlManager: CallControlManager destroyed
01-18 16:02:05.011 29676-29898/com.myapp D/CallCommandHandlerImpl: Shutting down thread
01-18 16:06:57.750 29676-29896/com.myapp W/OkHttpClient: A connection to https://ers.twilio.com/ was leaked. Did you forget to close a response body?
01-18 16:06:57.750 29676-29896/com.myapp W/OkHttpClient: A connection to https://eventgw.twilio.com/ was leaked. Did you forget to close a response body?

In Twilio:

Request:
URL: https://www.<mybackendserver>.com/call/route
Parameters:

ApplicationSid | APxxxxxxxxx
-- | --
ApiVersion | 2010-04-01
Called |  
Caller | client:user
CallStatus | ringing
From | client:user
To | +<my number>
CallSid | CAxxxxxxxxxx
Direction | inbound
AccountSid | ACxxxxxxxxx

Extra parameters are logged in Android when the call begins, and the call is connected successfully, but when inspecting the call in Twilio, the extra parameters are not present and they are never passed along to my server that handles the Twiml.

Some params I am trying to pass along are additional user and device meta data (example: version and model of the android device, as well as some app-specific account identifiers). Some of these params are required for determining how to handle the call at the server level, all while using the same dedicated Twiml App route.

It looks like the _callParams hash is serialized in the connect method, but it is not surviving the journey from client to Twiml to my server. Anything I am doing wrong here? Previously I
was using the same Twiml App with the same params and https://www.npmjs.com/package/react-native-twilio but I waned to migrate because that library is not really maintained.

ApplicationSid and AccountSid are correct, the To field is correct, I can lookup the call by CallSID, but normally I am able to pass additional parameters through Twiml when making outbound calls, but not with this library.

Any advice (twilio-related or otherwise) would be appreciated.

TwilioVoice 2.0.1

Hey guys, any plans to upgrade to new API structure?
Let me know if there is a roadmap so I can chip in with some contributions.

Android: Invalid access token

Please include following information for better support

What version of React Native are you running?
0.47.2

What version of react-native-twilio-programmable-voice are you running?
2.8.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?
Nexus 6

Is your app running in foreground, background or not running?
foreground

Even getting the token response from Twilio, I still get

deviceNotReadyHandler: { "err": "Invalid access token" }
  • this is happening only with Android

Crash on incoming GCM notification due to dependency conflict

What version of React Native are you running? 0.42.0

What version of react-native-twilio-programmable-voice are you running? 0.4.0

What device are you using? (e.g iOS9 emulator, Android 6 device)? Android emulator

Is your app running in foreground, background or not running? Foreground

Is there any relevant message in the log? Crashes when receiving GCM notifications during an incoming call due to a version conflict between play-services-gcm and firebase. Following the example in the README and using version 10.2.0 will cause a conflict when firebase libs used in this library are a different version.

Stack trace:

03-14 22:06:04.534  6015  6015 D AndroidRuntime: Shutting down VM
03-14 22:06:04.535  6015  6015 E AndroidRuntime: FATAL EXCEPTION: main
03-14 22:06:04.535  6015  6015 E AndroidRuntime: Process: com.twilio.voice.quickstart, PID: 6015
03-14 22:06:04.535  6015  6015 E AndroidRuntime: java.lang.NoSuchMethodError: No static method zzaaj()Lcom/google/firebase/iid/zzg; in class Lcom/google/firebase/iid/zzg; or its super classes (declaration of 'com.google.firebase.iid.zzg' appears in /data/app/com.twilio.voice.quickstart-1/base.apk)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at com.google.firebase.messaging.FirebaseMessagingService.zzF(Unknown Source)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at com.google.firebase.iid.zzb.onStartCommand(Unknown Source)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3010)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at android.app.ActivityThread.-wrap17(ActivityThread.java)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1442)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:148)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:5417)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
03-14 22:06:04.535  6015  6015 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

This is fixed by setting play-services-gcm to the same minor version number as used in the library.

    compile ('com.google.android.gms:play-services-gcm:10.0.+') {
        force = true;
    }

Android Null object reference ActivityCompat

RN: 0.47.2
react-native-twilio-programmable-voice: "^3.2.0"

On android, following the installation guide I'm getting the following error on run-android debug (device huawei honor 8 6.0).

22414737_507282749628632_801875250_n

Any clue? Thanks in advance.

EDIT:

There was no active call

Please include following information for better support

What version of React Native are you running?
0.47.2

What version of react-native-twilio-programmable-voice are you running?
2.8.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?
iOS10.3

Is there any relevant message in the log?

Code: no_call
Message: There was no active call
<Warning>: providerDidBegin
<Error>: [Default] Denying creation of CXXPCCallSource with applicationIdentifier: FAKETEAMID.org.reactjs.native.example.twilio bundle: NSBundle </CoreSimulator/Devices/.../twilio.app> (not yet loaded) hasVoIPBackgroundMode: 0 capabilities: {(
	)} connection: <NSXPCConnection: 0x7fa289c6ca80> connection from pid 21398
<Warning>: providerDidReset
<Warning>: 'Error', { [Error: There was no active call]
	  line: 1736,
	  column: 24,
	  sourceURL: '...',
	  framesToPop: 1,
	  code: 'no_call',
	  nativeStackIOS:
	   [ '0   twilio                              0x000000010aba3e46 RCTJSErrorFromCodeMessageAndNSError + 134',
	     '1   twilio                              0x000000010ab255d8 __41-[RCTModuleMethod processMethodSignature]_block_invoke_2.224 + 184',
	     '2   twilio                              0x000000010ad3adc9 -[RNTwilioVoice resolver:rejecter:] + 2745',
	     '3   CoreFoundation                      0x000000010cf6fc6c __invoking___ + 140',
	     '4   CoreFoundation                      0x000000010cf6fb40 -[NSInvocation invoke] + 320',
	     '5   CoreFoundation                      0x000000010cf87956 -[NSInvocation invokeWithTarget:] + 54',
	     '6   twilio                              0x000000010ab26a03 -[RCTModuleMethod invokeWithBridge:module:arguments:] + 1923',
	     '7   twilio                              0x000000010abe8d90 _ZN8facebook5react15RCTNativeModule11invokeInnerEjOKN5folly7dynamicE + 784',
	     '8   twilio                              0x000000010abe896c _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 60',
	     '9   twilio                              0x000000010abe8929 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 25',
	     '10  libdispatch.dylib                   0x000000011113b585 _dispatch_call_block_and_release + 12',
	     '11  libdispatch.dylib                   0x000000011115c792 _dispatch_client_callout + 8',
	     '12  libdispatch.dylib                   0x0000000111144247 _dispatch_main_queue_callback_4CF + 1041',
	     '13  CoreFoundation                      0x000000010cfac909 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9',
	     '14  CoreFoundation                      0x000000010cf72ae4 __CFRunLoopRun + 2164',
	     '15  CoreFoundation                      0x000000010cf72016 CFRunLoopRunSpecific + 406',
	     '16  GraphicsServices                    0x0000000112534a24 GSEventRunModal + 62',
	     '17  UIKit                               0x000000010f241134 UIApplicationMain + 159',
	     '18  twilio                              0x000000010aacfdbf main + 111',
	     '19  libdyld.dylib                       0x00000001111a565d start + 1',
	     '20  ???                                 0x0000000000000001 0x0 + 1' ],
	  userInfo: null,
	  domain: 'RCTErrorDomain' }
<Warning>: Calling phone number BrashKendraVail
<Error>: [Default] Connection is not entitled to use public API: <CXCallControllerHostConnection 0x7fa289e14560 hasVoIPBackgroundMode=0 applicationIdentifier=FAKETEAMID.org.reactjs.native.example.twilio bundle=NSBundle </CoreSimulator/Devices/33790932-85A5-4566-81DA-2415F7D7ECC2/data/Containers/Bundle/Application/E87FD6AF-4D61-4F73-A00B-42A905D2A064/twilio.app> (not yet loaded) capabilities={(
	)}
<Warning>: StartCallAction transaction request failed: The operation couldn’t be completed. (com.apple.CallKit.error.requesttransaction error 1.)
<Error>: CoreLocation: Error occurred while trying to retrieve motion state update: CMErrorDomain Code:104

Step to reproduce

I'm just setting the token and making a call.

TwilioVoice.connect({ To: this.state.phone_number })

TwilioVoice.getActiveCall().then(incomingCall => {
    if (incomingCall) {
    _deviceDidReceiveIncoming(incomingCall)
    }
}).catch((error) => {
    console.warn('Code', error.code)
    console.warn('Message', error.message)
    console.warn('Error', error)
})

iOS app calling 'initWithToken' why is the result hardcoded and no errors are thrown?

Please include following information for better support
When calling 'initWithToken' with an invalid token it does not throw an error. Also, when TwilioVoice.connect fails to connect it does not throw an error either, how are we suppose to react to errors? I see the errors in the logs. I am not sure if I am missing something.

What version of React Native are you running?
16.0.0-alpha.6

What version of react-native-twilio-programmable-voice are you running?
2.8.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?
iPhone 6 device

Is your app running in foreground, background or not running?
foreground

Is there any relevant message in the log?

native[1019:281452] providerDidBegin
native[1019:283459] StartCallAction transaction request successful
native[1019:283411] StartCallAction transaction request failed: The operation couldn’t be completed. (com.apple.CallKit.error.requesttransaction error 7.)
native[1019:281452] provider:performStartCallAction
native[1019:281452] provider:didActivateAudioSession
native[1019:283053] [ERROR TVONotificationClient] Registration failed: Error Domain=com.twilio.voice.error Code=20101 "Invalid access token" UserInfo={NSLocalizedDescription=Invalid access token}
native[1019:283053] [ERROR TwilioVoice] Inside register:deviceToken:completion:, failed to register for Twilio push notifications. Error:Invalid access token
native[1019:283053] An error occurred while registering: Invalid access token

If using iOS, which pod version are you using?
1.3.1

Step to reproduce
Call TwilioVoice.initWithToken with an invalid token.

Advanced:
Have you tried adding break point in native handlers and see the logs printed?
can share a project with issue?
Did you try to reinstall the pods completely?

The more context you provide around this issue the faster the community can help you.

iOS Initial

I have Twilio Programmable Voice working perfectly within my own React Native app for iOS. As I intend to now move to Android, I thought I would try to pull my code over to be included in this library to help someone else out.

I built the functionality outside of this library, so I pulled out the relevant bits from my own project and put it in my fork. I haven't tested it from within the library yet, but the structure is all there that I used. My biggest reservation is the linking of the Twilio library that is pulled in through the Podfile as I haven't tested it from within the library yet.

I utilized CallKit as it is super easy and much more integrated on iOS than manually handling calls. Because of this, my implementation is missing manual calls for "accept", "reject", and "ignore."

If you want the PR, just let me know. If someone wants to test, that would be appreciated as well as I don't have the time for that currently.

Achieving UX parity with Android default "phone" app

React Native: 42
react-native-twilio-programmable-voice: 0.6.2
Device: Nexus 6 (Android 7)

What I am experiencing currently is any inbound call opens the app (if not already in foreground) and creates a notification in all app states (background, foreground, screen off). The notification does not show on screen, just in the status bar.

The default Android phone app does things differently for inbound calls.

  1. When device screen is off the phone app functions just like this library. It opens the app in foreground to an "answer/reject" style page of the phone app itself. It also puts a notification in the status bar (not onscreen).

  2. But, when app is in foreground and background a notification is shown on screen, but the app does not come to foreground automatically. If rejected, the app does not open and notification goes away. If answered, the app comes to foreground and notification is modified.

I am not yet familiar enough with the Android API to modify the NotificationHelper.java code itself to achieve UX on parity with the default phone app. Would this be controlled in the "getLaunchIntent"...or maybe the "NotificationCompat.Builder"s themselves? I am not yet seeing where to modify this behavior. Any pointers would be appreciated.

iOS Crashing upon connect() - nil call_sid

React-Native 0.37
React-Native-Twilio-Programmable-Voice 2.2.0
iOS10 simulator
App in foreground
Pod version = 2.0.0

Upon attempting to place an outgoing call, the app crashes with NSInvalidArgumentException with reason 'setObjectForKey: object cannot be nil (key: call_sid)'

I am also getting X-Twilio-Error: 31201 which is a 'generic unknown error'.

This is after receiving a valid twilio auth token from our server, and then initializing twilio with that valid token.

The outgoing call is to a valid phone number.

I can provide additional console output if helpful!

crash when receiving a call

Please include following information for better support

RN 0.38
this lib 0.2.0
device Android One Plus 2 OS 5.1.1
app running in background

log

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.twilio.voice.IncomingCallMessage.getCallSid()' on a null object reference
       at com.hoxfon.react.TwilioVoice.TwilioVoiceModule.handleIncomingCallIntent(TwilioVoiceModule.java:429)
       at com.hoxfon.react.TwilioVoice.TwilioVoiceModule.onNewIntent(TwilioVoiceModule.java:164)
       at com.facebook.react.bridge.ReactContext.onNewIntent(ReactContext.java:218)
       at com.facebook.react.XReactInstanceManagerImpl.onNewIntent(XReactInstanceManagerImpl.java:483)
       at com.facebook.react.ReactActivityDelegate.onNewIntent(ReactActivityDelegate.java:165)
       at com.facebook.react.ReactActivity.onNewIntent(ReactActivity.java:99)
       at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1211)
       at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1223)
       at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2489)
       at android.app.ActivityThread.performNewIntents(ActivityThread.java:2501)
       at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2510)
       at android.app.ActivityThread.access$1700(ActivityThread.java:154)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5292)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)

Crash app when an error occurs on OutgoingCall error disconnect method

RN 0.41.2
this lib 0.4.0
Android Plus 1 three
foreground

com.hoxfon.react.TwilioVoice.NotificationHelper.removeHangupNotification (NotificationHelper.java:316)
com.hoxfon.react.TwilioVoice.TwilioVoiceModule$5.onDisconnected (TwilioVoiceModule.java:365)
com.twilio.voice.OutgoingCall$4.run (OutgoingCall.java:168)

At some point the callId becomes null so the equals method fails.
There must be a way to check for the presence of the ongoing notification and remove it, even without the callId.

Unable to resolve module `ReactNativeART`

After installing the package I'm getting an Unable to resolve module ReactNativeART error when running the project.

RN version: 0.47.2
react-native-twilio-programmable-voice version: ^3.1.0
using IOS10.3 simulator
pod version: =2.0.0-beta15

Step to reproduce

  1. npm install react-native-twilio-programmable-voice --save
  2. react-native link react-native-twilio-programmable-voice
  3. Verified libRNTwilioVoice.a in Link Binaries With Libraries
  4. added pod 'TwilioVoice', '=2.0.0-beta15' to podfile
  5. pod repo update
  6. pod install
  7. react-native run-ios

The console message is

error: bundling failed: "Unable to resolve module ReactNativeART from /node_modules/react-native/Libraries/react-native/react-native-implementation.js: Module does not exist in the module map\n\nThis might be related to https://github.com/facebook/react-native/issues/4968\nTo resolve try the following:\n 1. Clear watchman watches: watchman watch-del-all.\n 2. Delete the node_modules folder: rm -rf node_modules && npm install.\n 3. Reset packager cache: rm -fr $TMPDIR/react-* or npm start -- --reset-cache."

I've tried starting from scratch but still getting the same error.

Thanks

shouldShowRequestPermissionRational nul object reference

Please include following information for better support

What version of React Native are you running? "0.49.3"
What version of react-native-twilio-programmable-voice are you running? "^3.2.0"
What device are you using? Android 6 Device
Is your app running in foreground, background or not running? Runtime
Is there any relevant message in the log? Attempt to invoke virtual method 'boolean android.app.Activity.shouldShowRequestPermissionRationale(java.lang.String)' on a null object reference.

If i remove the requestPermissionForMicrophone function isnide TwilioVoiceModule.java the error disappears.
I'm also requesting permission as recommended in app and manifest.
Any clue whats triggering the error?

Can not make access token working, help needed!

Hi, can you please share how to resolve Invalid access token header issue? I simply retrieve token from my local https://4f155c65.ngrok.io/token server and verified the token is fine. however I still received `invalid access token header' when I make a call. thanks!!!

Update the Android part to BETA 6

Twilio released SDKs beta4 and beta5, the Android part of this library still uses beta3

what changed

beta4

https://github.com/twilio/voice-quickstart-android/pull/14/files

  • added soundPoolManager
  • change incomingCallMessages to callInvite
  • remove incomingCallMessageListener()
  • change OutgoingCall to Call
  • add group to call invite notification

beta5

https://github.com/twilio/voice-quickstart-android/pull/24/files

  • moved form GCM to FCM
  • rename gcm directory to fcm
  • remove checkPlayServices()
  • use FirebaseInstanceId to obtain the device token
  • remove ACTION_SET_GCM_TOKEN intent action
  • use VoiceClient instead of Voice
  • add AppFirebaseInstanceIDService.java
  • renamed VoiceGCMListenerService.java to AppFirebaseMessagingService.java

official changelog

https://www.twilio.com/docs/api/voice-sdk/android/changelog

beta 6

Android On incoming call when task is dismissed the notification tap have no effect

react-native 0.50.4
react-native-twilio-programmable-voice 3.18.0
Android One Plus 3
Android v 8.0.0

when there is an incoming call regardless of the app being on the foreground, when the app gets killed the incoming call notification stays, but neither of the button works.

Ideally the ANSWER button would restart the app, the REJECT button would reject the call and dismiss the incoming call notification.

If anyone knows how to handle this situation correctly, any help would be greatly appreciated.

call doesn't disconnect when the App stops

RN 0.41.2
lib 0.6.0
Android ONE PLUS 3

When the App is closed from the tray, or dismissed the onHostDestroy() method is not called and the active call is not terminated

`TwilioVoice.initWithToken()` and `TwilioVoice.connect()` did not work properly on iOS 10.2 simulator

TwilioVoice.initWithToken() and TwilioVoice.connect() did not work properly, after connect executed it nothing is happening.
And also whatever the token used on initWithToken (e.g. random string), it always return:

{
  initilized: true,
}

Here is the code that I use:

import React, {Component} from 'react';
import {StyleSheet, Text, View, Button} from 'react-native';
import TwilioVoice from 'react-native-twilio-programmable-voice';

export default class App extends Component {
  constructor() {
    super(...arguments);
    this.state = {
      success: false,
    };
  }

  async componentWillMount() {
    try {
      let success = await TwilioVoice.initWithToken('token');
      console.log(success);
      this.setState({success});
      TwilioVoice.addEventListener('connectionDidConnect', () => {
        console.log('>> TwilioVoice, Call connected.');
      });
      TwilioVoice.addEventListener('connectionDidDisconnect', () => {
        console.log('>> TwilioVoice, Call disconnected.');
      });
    } catch (e) {
      console.log('error token:', e);
    }
  }

render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>Welcome!</Text>
        <Button
          title="Call"
          onPress={() => {
            if (this.state.success && this.state.success.initilized) {
              try {
                console.log('>> TwilioVoice, Calling...');
                TwilioVoice.connect({To: '+62123456789'});
              } catch (e) {
                console.log('>> error:', e);
              }
            }
          }}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
});

What version of React Native are you running?

I use RN v0.47.2

What version of react-native-twilio-programmable-voice are you running?

I use v2.8.0

What device are you using? (e.g iOS9 simulator, Android 6 device)?

I use iOS 10.2 simulator

Is your app running in foreground, background or not running?

It's running on foreground

Is there any relevant message in the log?

Nope, nothing

If using iOS, which pod version are you using?

I use pod v1.31

Step to reproduce

Just run it normally

Impossible to re-try to connect a call after Authorization error

RN 0.43.4
react-native-twilio-programmable-voice 0.6.1
Android emulator 7.0.0

When I try to re-connect an outgoing call after receiving an Authorization error I received another error: Wrong answer from a service. Also the RegistrationListener().onRegistered() method is called multiple times.

This is the exception: sending message to a Handler on a dead thread

E/TwilioVoice: outgoingCallListener onDisconnected error: 31201, Authorization error
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"err":"Authorization error","call_state":"DISCONNECTED","call_sid":null} }
D/TwilioVoice: sendEvent deviceReady params null
D/TwilioVoice: sendEvent deviceReady params null
D/TwilioVoice: connect params: { NativeMap: {"CallerId":"+441253530539","To":"+441992351888"} }
W/MessageQueue: Handler (android.os.Handler) {cd9baba} sending message to a Handler on a dead thread
      java.lang.IllegalStateException: Handler (android.os.Handler) {cd9baba} sending message to a Handler on a dead thread
          at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543)
          at android.os.Handler.enqueueMessage(Handler.java:643)
          at android.os.Handler.sendMessageAtTime(Handler.java:612)
          at android.os.Handler.sendMessageDelayed(Handler.java:582)
          at android.os.Handler.post(Handler.java:338)
          at com.twilio.voice.CallCommandHandlerImpl.postCommand(CallCommandHandlerImpl.java:34)
          at com.twilio.voice.CallControlManager.call(CallControlManager.java:364)
          at com.twilio.voice.VoiceClient.call(VoiceClient.java:121)
          at com.hoxfon.react.TwilioVoice.TwilioVoiceModule.connect(TwilioVoiceModule.java:588)
          at java.lang.reflect.Method.invoke(Native Method)
          at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:345)
          at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:141)
          at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
          at android.os.Handler.handleCallback(Handler.java:751)
          at android.os.Handler.dispatchMessage(Handler.java:95)
          at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
          at android.os.Looper.loop(Looper.java:154)
          at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
          at java.lang.Thread.run(Thread.java:761)
D/TwilioVoice: sendEvent deviceReady params null
E/TwilioVoice: Error: 31404, Wrong answer from a service
D/TwilioVoice: sendEvent deviceNotReady params { NativeMap: {"err":"Wrong answer from a service"} }
D/TwilioVoice: sendEvent deviceReady params null

When I wait 2 seconds before retrying the call the error disappear and the call is connected

Generic errorpjsua_call_make_call(): Too many objects of the specified type (PJ_ETOOMANY)

when answering a call

D/TwilioVoice: onMessageReceived senderId 839934664954
D/TwilioVoice: showNotification messageType: twilio.voice.call
D/MessagingService: Remote message received
D/TwilioVoice: sendEvent deviceDidReceiveIncoming params { NativeMap: {"call_state":"PENDING","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: sendEvent deviceDidReceiveIncoming params { NativeMap: {"call_state":"PENDING","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: sendEvent deviceDidReceiveIncoming params { NativeMap: {"call_state":"PENDING","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: sendEvent deviceDidReceiveIncoming params { NativeMap: {"call_state":"PENDING","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: sendEvent deviceDidReceiveIncoming params { NativeMap: {"call_state":"PENDING","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: sendEvent deviceDidReceiveIncoming params { NativeMap: {"call_state":"PENDING","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
W/EGL_emulation: eglSurfaceAttrib not implemented
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xd2d996c0, error=EGL_SUCCESS
I/PJSIP: 11:55:37.715 os_core_unix.c !pjlib 2.5.1 for POSIX initialized
D/PJSIP: 11:55:37.716 sip_endpoint.c  .Creating endpoint instance...
I/PJSIP: 11:55:37.716          pjlib  .select() I/O Queue created (0xcc416044)
I/PJSIP: 11:55:37.716 sip_endpoint.c  .Module "mod-msg-print" registered
D/PJSIP: 11:55:37.716 sip_transport.  .Transport manager created.
I/PJSIP: 11:55:37.716   pjsua_core.c  .PJSUA state changed: NULL --> CREATED
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-pjsua-log" registered
I/PJSIP: 11:55:37.717   pjsua_core.c  .Nameserver 8.8.8.8 added
I/PJSIP: 11:55:37.717   pjsua_core.c  .Nameserver 192.168.1.254 added
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-tsx-layer" registered
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-stateful-util" registered
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-ua" registered
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-100rel" registered
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-pjsua" registered
I/PJSIP: 11:55:37.717 sip_endpoint.c  .Module "mod-invite" registered
I/PJSIP: 11:55:37.717   opensl_dev.c  ..OpenSL sound library initialized
I/PJSIP: 11:55:37.717 android_jni_de  ..Android JNI sound library initialized
I/PJSIP: 11:55:37.717          pjlib  ..select() I/O Queue created (0xd2d63814)
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-evsub" registered
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-presence" registered
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-mwi" registered
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-refer" registered
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-pjsua-pres" registered
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-pjsua-im" registered
I/PJSIP: 11:55:37.720 sip_endpoint.c  .Module "mod-pjsua-options" registered
I/PJSIP: 11:55:37.720   pjsua_core.c  .1 SIP worker threads created
W/PJSIP: 11:55:37.720   pjsua_core.c  .pjsua version 2.5.1 for Linux-3.10/i686 initialized
I/PJSIP: 11:55:37.720   pjsua_core.c  .PJSUA state changed: CREATED --> INIT
I/PJSIP: 11:55:37.722    tlstp:36585  SIP TLS listener is ready for incoming connections at 10.0.3.15:36585
I/PJSIP: 11:55:37.723   pjsua_core.c  PJSUA state changed: INIT --> STARTING
I/PJSIP: 11:55:37.723 sip_endpoint.c  .Module "mod-unsolicited-mwi" registered
I/PJSIP: 11:55:37.723   pjsua_core.c  .PJSUA state changed: STARTING --> RUNNING
I/PJSIP: 11:55:37.724    pjsua_acc.c  Adding account: id=sip:[email protected]
I/PJSIP: 11:55:37.724    pjsua_acc.c  .Account sip:[email protected] added with id 0
W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client; transfer 1, track 16000 Hz, output 44100 Hz
W/AudioRecord: AUDIO_INPUT_FLAG_FAST denied by client; transfer 1, track 16000 Hz, primary 44100 Hz
A/PJSIP: 11:55:43.737   pjsua_call.c  .Error making call: Too many objects of the specified type (PJ_ETOOMANY) [status=70010]
A/PJSIP: 11:55:43.737   pjsua_call.c  .Error making call: Too many objects of the specified type (PJ_ETOOMANY) [status=70010]
E/TwilioVoice: incomingCallListener onDisconnected error: 31000, code:31000, message:Generic errorpjsua_call_make_call(): Too many objects of the specified type (PJ_ETOOMANY)
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","err":"code:31000, message:Generic errorpjsua_call_make_call(): Too many objects of the specified type (PJ_ETOOMANY)","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
E/TwilioVoice: incomingCallListener onDisconnected error: 31000, code:31000, message:Generic errorpjsua_call_make_call(): Too many objects of the specified type (PJ_ETOOMANY)
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","err":"code:31000, message:Generic errorpjsua_call_make_call(): Too many objects of the specified type (PJ_ETOOMANY)","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
I/Choreographer: Skipped 520 frames!  The application may be doing too much work on its main thread.
D/TwilioVoice: sendEvent connectionDidConnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
E/TwilioVoice: incomingCallListener onDisconnected error: 31001, code:31001, message:TwiML application not found
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","err":"code:31001, message:TwiML application not found","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
E/TwilioVoice: incomingCallListener onDisconnected error: 31001, code:31001, message:TwiML application not found
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","err":"code:31001, message:TwiML application not found","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
E/TwilioVoice: incomingCallListener onDisconnected error: 31000, code:31000, message:Generic error
D/TwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_state":"DISCONNECTED","call_to":"client:44786849XXXX","err":"code:31000, message:Generic error","call_from":"+44786849XXXX","call_sid":"CA02fd51d45b5c1c777a89e5cac8d7feca"} }
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: onMessageReceived senderId 839934664954
D/TwilioVoice: showNotification messageType: twilio.voice.cancel
D/TwilioVoice: incoming call cancelled
D/MessagingService: Remote message received
D/TwilioVoice: onIncomingCallCancelled: Incoming call from +44786849XXXX was cancelled active call null
D/TwilioVoice: sendEvent connectionDidDisconnect params null
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: onIncomingCallCancelled: Incoming call from +44786849XXXX was cancelled active call null
D/TwilioVoice: sendEvent connectionDidDisconnect params null
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: onIncomingCallCancelled: Incoming call from +44786849XXXX was cancelled active call null
D/TwilioVoice: sendEvent connectionDidDisconnect params null
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: onIncomingCallCancelled: Incoming call from +44786849XXXX was cancelled active call null
D/TwilioVoice: sendEvent connectionDidDisconnect params null
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: onIncomingCallCancelled: Incoming call from +44786849XXXX was cancelled active call null
D/TwilioVoice: sendEvent connectionDidDisconnect params null
D/TwilioVoice: failed Catalyst instance not active
D/TwilioVoice: onIncomingCallCancelled: Incoming call from +44786849XXXX was cancelled active call null
D/TwilioVoice: sendEvent connectionDidDisconnect params null

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.