mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 00:57:31 -05:00
Integrate OTA alias for Broadcastify srcId_alias (#2395)
* Add srcId_alias (source radio alias) to Broadcastify calls uploads Ports the OTA alias lookup logic from trunk-recorder commit 91597dc into sdrtrunk's Broadcastify Calls integration. When uploading a call, the source radio ID's alias name is resolved via the existing alias system and sent as the srcId_alias form field. If no alias is configured, the field is omitted. Agent-Logs-Url: https://github.com/djshadowxm82/sdrtrunk/sessions/abc044d3-99c6-4d5c-8d44-99ac8a11bef9 Co-authored-by: djshadowxm82 <10658965+djshadowxm82@users.noreply.github.com> * Use OTA TalkerAliasIdentifier for srcId_alias instead of manual AliasList lookup Changes getFromAlias() to resolve the over-the-air talker alias acquired in real-time from RF signals (P25 Motorola Talker Alias, DMR Talker Alias) instead of looking up manually pre-configured aliases from the AliasList system. Follows the same pattern used by OpenMHZ and RdioScanner broadcasters. Agent-Logs-Url: https://github.com/djshadowxm82/sdrtrunk/sessions/d8cbaf9c-e6db-419a-90f4-c9ee04846995 Co-authored-by: djshadowxm82 <10658965+djshadowxm82@users.noreply.github.com> * Add build-test workflow for downloadable release artifacts on this branch Agent-Logs-Url: https://github.com/djshadowxm82/sdrtrunk/sessions/224c0998-9677-4b83-8fb4-724c1e745e00 Co-authored-by: djshadowxm82 <10658965+djshadowxm82@users.noreply.github.com> * Remove workflow file --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: djshadowxm82 <10658965+djshadowxm82@users.noreply.github.com>
This commit is contained in:
@@ -34,6 +34,7 @@ import io.github.dsheirer.identifier.Form;
|
|||||||
import io.github.dsheirer.identifier.Identifier;
|
import io.github.dsheirer.identifier.Identifier;
|
||||||
import io.github.dsheirer.identifier.IdentifierClass;
|
import io.github.dsheirer.identifier.IdentifierClass;
|
||||||
import io.github.dsheirer.identifier.Role;
|
import io.github.dsheirer.identifier.Role;
|
||||||
|
import io.github.dsheirer.identifier.alias.TalkerAliasIdentifier;
|
||||||
import io.github.dsheirer.identifier.configuration.AliasListConfigurationIdentifier;
|
import io.github.dsheirer.identifier.configuration.AliasListConfigurationIdentifier;
|
||||||
import io.github.dsheirer.identifier.configuration.ConfigurationLongIdentifier;
|
import io.github.dsheirer.identifier.configuration.ConfigurationLongIdentifier;
|
||||||
import io.github.dsheirer.identifier.patch.PatchGroup;
|
import io.github.dsheirer.identifier.patch.PatchGroup;
|
||||||
@@ -253,6 +254,8 @@ public class BroadcastifyCallBroadcaster extends AbstractAudioBroadcaster<Broadc
|
|||||||
String radioId = getFrom(audioRecording);
|
String radioId = getFrom(audioRecording);
|
||||||
float frequency = getFrequency(audioRecording);
|
float frequency = getFrequency(audioRecording);
|
||||||
|
|
||||||
|
String radioIdAlias = getFromAlias(audioRecording);
|
||||||
|
|
||||||
BroadcastifyCallBuilder bodyBuilder = new BroadcastifyCallBuilder();
|
BroadcastifyCallBuilder bodyBuilder = new BroadcastifyCallBuilder();
|
||||||
bodyBuilder.addPart(FormField.API_KEY, getBroadcastConfiguration().getApiKey())
|
bodyBuilder.addPart(FormField.API_KEY, getBroadcastConfiguration().getApiKey())
|
||||||
.addPart(FormField.SYSTEM_ID, getBroadcastConfiguration().getSystemID())
|
.addPart(FormField.SYSTEM_ID, getBroadcastConfiguration().getSystemID())
|
||||||
@@ -263,6 +266,11 @@ public class BroadcastifyCallBroadcaster extends AbstractAudioBroadcaster<Broadc
|
|||||||
.addPart(FormField.FREQUENCY, frequency)
|
.addPart(FormField.FREQUENCY, frequency)
|
||||||
.addPart(FormField.ENCODING, ENCODING_TYPE_MP3);
|
.addPart(FormField.ENCODING, ENCODING_TYPE_MP3);
|
||||||
|
|
||||||
|
if(radioIdAlias != null && !radioIdAlias.isEmpty())
|
||||||
|
{
|
||||||
|
bodyBuilder.addPart(FormField.RADIO_ID_ALIAS, radioIdAlias);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
@@ -446,6 +454,27 @@ public class BroadcastifyCallBroadcaster extends AbstractAudioBroadcaster<Broadc
|
|||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolves the over-the-air talker alias for the FROM (source radio) identifier, acquired in real-time from RF
|
||||||
|
* (e.g. P25 Motorola Talker Alias or DMR Talker Alias). Returns null if no OTA alias was received for this call.
|
||||||
|
* This is sent as the srcId_alias field in Broadcastify uploads.
|
||||||
|
*/
|
||||||
|
private static String getFromAlias(AudioRecording audioRecording)
|
||||||
|
{
|
||||||
|
for(Identifier identifier: audioRecording.getIdentifierCollection().getIdentifiers(Role.FROM))
|
||||||
|
{
|
||||||
|
if(identifier instanceof TalkerAliasIdentifier talkerAliasIdentifier)
|
||||||
|
{
|
||||||
|
if(talkerAliasIdentifier.isValid())
|
||||||
|
{
|
||||||
|
return talkerAliasIdentifier.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a formatted string with the TO identifiers or uses a default of zero (0)
|
* Creates a formatted string with the TO identifiers or uses a default of zero (0)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public enum FormField
|
|||||||
TIMESTAMP("ts"),
|
TIMESTAMP("ts"),
|
||||||
TALKGROUP_ID("tg"),
|
TALKGROUP_ID("tg"),
|
||||||
RADIO_ID("src"),
|
RADIO_ID("src"),
|
||||||
|
RADIO_ID_ALIAS("srcId_alias"),
|
||||||
FREQUENCY("freq"),
|
FREQUENCY("freq"),
|
||||||
ENCODING("enc"),
|
ENCODING("enc"),
|
||||||
TEST("test");
|
TEST("test");
|
||||||
|
|||||||
Reference in New Issue
Block a user