CapturePerceptCommRequest function
Future<void>
CapturePerceptCommRequest(
- PerceptCommunicationState commState,
- Map<
String, dynamic> message, - String piToken
Implementation
Future<void> CapturePerceptCommRequest(
PerceptCommunicationState commState,
Map<String, dynamic> message,
String piToken,
) async {
Debug.print("Communication Request Initiate: $commState $message");
try {
Map<String, dynamic> remoteMessageJson =
RemoteMessage.fromMap(message).toMap();
final stringProperties = <String, String>{};
final listProperties = <String, List<String>>{};
Map<String, dynamic> propertiesToSend = {};
if (remoteMessageJson['pi_pn_metaData'] != null) {
final decodedMetaData = jsonDecode(remoteMessageJson['pi_pn_metaData'])
as Map<String, dynamic>;
if (decodedMetaData.isNotEmpty) {
propertiesToSend.addAll(decodedMetaData);
}
}
final packageInfo = await PackageInfo.fromPlatform();
propertiesToSend.addAll({
PerceptOS.name.asString: Platform.operatingSystem,
PerceptOS.version.asString: Platform.operatingSystemVersion,
PerceptSDK.clientTs.asString:
DateTime.now().millisecondsSinceEpoch.toString(),
PerceptSDK.clientUniqueEventId.asString: "EI-${getUuidV4()}",
PerceptSDK.type.asString: 'Flutter',
PerceptSDK.version.asString:
PerceptFlutterPlatform.instance.getPluginVersion(),
...packageInfo.asMap
});
propertiesToSend.forEach((key, value) {
if (!keysToRemove.contains(key)) {
if (value is List<dynamic>) {
listProperties[key] = value.map((e) => e.toString()).toList();
} else {
stringProperties[key] = value.toString();
}
}
});
final request = CommunicationRequest(
commState.asString,
stringProperties,
listProperties,
);
await sendCommunicationCaptureRequest([request], piToken);
} catch (e, s) {
Debug.print("Communication Request Error: $e $s");
}
}