In attended call transfer, check if peer supports REPLACES header
This commit is contained in:
@@ -1414,6 +1414,14 @@ JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_Api_call_1ismuted(
|
|||||||
return audio_ismuted(call_audio((struct call *)call));
|
return audio_ismuted(call_audio((struct call *)call));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_Api_call_1supported(
|
||||||
|
JNIEnv *env, jobject obj, jlong call, jint tags)
|
||||||
|
{
|
||||||
|
(void)env;
|
||||||
|
(void)obj;
|
||||||
|
return call_supported((struct call *)call, tags);
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_com_tutpro_baresip_Api_call_1transfer(
|
JNIEXPORT jint JNICALL Java_com_tutpro_baresip_Api_call_1transfer(
|
||||||
JNIEnv *env, jobject obj, jlong call, jstring jPeer)
|
JNIEnv *env, jobject obj, jlong call, jstring jPeer)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ object Api {
|
|||||||
external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean
|
external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean
|
||||||
external fun call_peer_uri(callp: Long): String
|
external fun call_peer_uri(callp: Long): String
|
||||||
external fun call_diverter_uri(callp: Long): String
|
external fun call_diverter_uri(callp: Long): String
|
||||||
|
|
||||||
|
external fun call_supported(callp: Long, header: Int): Boolean
|
||||||
external fun call_destroy(callp: Long)
|
external fun call_destroy(callp: Long)
|
||||||
|
|
||||||
external fun calls_mute(mute: Boolean)
|
external fun calls_mute(mute: Boolean)
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: Str
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
const val REPLACES = 1
|
||||||
|
|
||||||
fun calls(): ArrayList<Call> {
|
fun calls(): ArrayList<Call> {
|
||||||
return BaresipService.calls
|
return BaresipService.calls
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1579,13 +1579,20 @@ private fun CallRow(
|
|||||||
enabled = call.transferButtonEnabled.value,
|
enabled = call.transferButtonEnabled.value,
|
||||||
onClick = {
|
onClick = {
|
||||||
if (call.onHoldCall != null) {
|
if (call.onHoldCall != null) {
|
||||||
val connection = ConnectionService.connections[call.callp]
|
if (!Api.call_supported(call.callp, Call.REPLACES)) {
|
||||||
connection?.onHold()
|
alertTitle.value = ctx.getString(R.string.notice)
|
||||||
if (!call.executeTransfer()) {
|
alertMessage.value = ctx.getString(R.string.replaces_not_supported)
|
||||||
alertTitle.value = ctx.getString(R.string.notice)
|
|
||||||
alertMessage.value = ctx.getString(R.string.transfer_failed)
|
|
||||||
showAlert.value = true
|
showAlert.value = true
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
val connection = ConnectionService.connections[call.callp]
|
||||||
|
connection?.onHold()
|
||||||
|
if (!call.executeTransfer()) {
|
||||||
|
alertTitle.value = ctx.getString(R.string.notice)
|
||||||
|
alertMessage.value = ctx.getString(R.string.transfer_failed)
|
||||||
|
showAlert.value = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
showTransferDialog = true
|
showTransferDialog = true
|
||||||
|
|||||||
@@ -521,6 +521,7 @@
|
|||||||
<string name="allow_video_send">Salli video videon lähetys puhelussa \'%1$s\'\?</string>
|
<string name="allow_video_send">Salli video videon lähetys puhelussa \'%1$s\'\?</string>
|
||||||
<string name="allow_video_recv">Salli video videon vastaanotto puhelussa \'%1$s\'\?</string>
|
<string name="allow_video_recv">Salli video videon vastaanotto puhelussa \'%1$s\'\?</string>
|
||||||
<string name="call_is_on_hold">Puhelu on pidossa</string>
|
<string name="call_is_on_hold">Puhelu on pidossa</string>
|
||||||
|
<string name="call_is_connected">Puhelu on yhdistetty</string>
|
||||||
<string name="rec_in_call">Tallennus voidaan asettaa päälle tai pois vain silloin, kun puhelu
|
<string name="rec_in_call">Tallennus voidaan asettaa päälle tai pois vain silloin, kun puhelu
|
||||||
ei ole yhdistetty</string>
|
ei ole yhdistetty</string>
|
||||||
<string name="call_transfer">Puhelun siirto</string>
|
<string name="call_transfer">Puhelun siirto</string>
|
||||||
@@ -530,6 +531,7 @@
|
|||||||
<string name="choose_destination_uri">Valitse kohteen URI</string>
|
<string name="choose_destination_uri">Valitse kohteen URI</string>
|
||||||
<string name="transfer">Siirto</string>
|
<string name="transfer">Siirto</string>
|
||||||
<string name="transfer_failed">Siirto epäonnistui</string>
|
<string name="transfer_failed">Siirto epäonnistui</string>
|
||||||
|
<string name="replaces_not_supported">Toinen osapuoli ei tue REPLACES ominaisuutta</string>
|
||||||
<string name="dtmf">DTMF</string>
|
<string name="dtmf">DTMF</string>
|
||||||
<string name="call_info">Puhelutiedot</string>
|
<string name="call_info">Puhelutiedot</string>
|
||||||
<string name="call_info_not_available">Ei saatavilla</string>
|
<string name="call_info_not_available">Ei saatavilla</string>
|
||||||
|
|||||||
@@ -515,6 +515,7 @@
|
|||||||
<string name="choose_destination_uri">Choose destination URI</string>
|
<string name="choose_destination_uri">Choose destination URI</string>
|
||||||
<string name="transfer">Transfer</string>
|
<string name="transfer">Transfer</string>
|
||||||
<string name="transfer_failed">Transfer failed</string>
|
<string name="transfer_failed">Transfer failed</string>
|
||||||
|
<string name="replaces_not_supported">Peer does not support REPLACES feature</string>
|
||||||
<string name="dtmf">DTMF</string>
|
<string name="dtmf">DTMF</string>
|
||||||
<string name="call_info">Call Info</string>
|
<string name="call_info">Call Info</string>
|
||||||
<string name="call_info_not_available">No info available</string>
|
<string name="call_info_not_available">No info available</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user