@burgan-tech/morph-touch-runtime 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/burgan-tech-morph-touch-runtime-0.0.2.tgz +0 -0
- package/package.json +21 -0
- package/touch/Extensions/.gitkeep +0 -0
- package/touch/Functions/.gitkeep +0 -0
- package/touch/Functions/check-livekit-room-access.1.0.0.json +28 -0
- package/touch/Functions/check-livekit-room-access.http +44 -0
- package/touch/Functions/get-absence-entry.1.0.0.json +28 -0
- package/touch/Functions/get-advisor-stats.1.0.0.json +27 -0
- package/touch/Functions/get-available-slots.1.0.0.json +30 -0
- package/touch/Functions/get-available-slots.http +29 -0
- package/touch/Functions/get-chat-rooms.1.0.0.json +28 -0
- package/touch/Functions/get-chat-rooms.http +62 -0
- package/touch/Functions/get-customer-info.1.0.0.json +27 -0
- package/touch/Functions/get-matrix-sync.1.0.0.json +28 -0
- package/touch/Functions/get-rezervations.1.0.0.json +26 -0
- package/touch/Functions/get-rezervations.http +59 -0
- package/touch/Functions/get-room-messages.1.0.0.json +29 -0
- package/touch/Functions/get-room-messages.http +45 -0
- package/touch/Functions/rezervation-transfer.http +118 -0
- package/touch/Functions/send-room-message.1.0.0.json +29 -0
- package/touch/Functions/src/CheckLivekitRoomAccessMapping.csx +238 -0
- package/touch/Functions/src/GetAbsenceEntryMapping.csx +225 -0
- package/touch/Functions/src/GetAdvisorStatsMapping.csx +190 -0
- package/touch/Functions/src/GetAvailableSlotsMapping.csx +468 -0
- package/touch/Functions/src/GetChatRoomsMapping.csx +202 -0
- package/touch/Functions/src/GetCustomerInfoMapping.csx +140 -0
- package/touch/Functions/src/GetMatrixSyncMapping.csx +197 -0
- package/touch/Functions/src/GetRezervationsMapping.csx +162 -0
- package/touch/Functions/src/GetRoomMessagesMapping.csx +165 -0
- package/touch/Functions/src/SendCancelNotificationMapping.csx +63 -0
- package/touch/Functions/src/SendRoomMessageMapping.csx +131 -0
- package/touch/Schemas/.gitkeep +0 -0
- package/touch/Schemas/absence-entry.1.0.0.json +232 -0
- package/touch/Schemas/advisor-chat-rooms.1.0.0.json +62 -0
- package/touch/Schemas/chat-room.1.0.0.json +110 -0
- package/touch/Schemas/notification-sender.1.0.0.json +159 -0
- package/touch/Schemas/portfolio-manager.1.0.0.json +63 -0
- package/touch/Schemas/rezervation.1.0.0.json +102 -0
- package/touch/Tasks/.gitkeep +0 -0
- package/touch/Tasks/cancel-absence-entry-for-rezervation.1.0.0.json +21 -0
- package/touch/Tasks/check-already-completed-chat-room.1.0.0.json +24 -0
- package/touch/Tasks/check-duplicate-portfolio-manager.1.0.0.json +23 -0
- package/touch/Tasks/check-duplicate-rezervation.1.0.0.json +23 -0
- package/touch/Tasks/check-existing-permanent-chat-room.1.0.0.json +21 -0
- package/touch/Tasks/check-randevu-time.1.0.0.json +17 -0
- package/touch/Tasks/create-permanent-chat-room.1.0.0.json +28 -0
- package/touch/Tasks/determine-transfer-type.1.0.0.json +16 -0
- package/touch/Tasks/enrich-rezervations-for-transfer.1.0.0.json +23 -0
- package/touch/Tasks/execute-permanent-chatroom-update.1.0.0.json +21 -0
- package/touch/Tasks/execute-rez-chatroom-transfer.1.0.0.json +21 -0
- package/touch/Tasks/execute-rezervation-transfer.1.0.0.json +19 -0
- package/touch/Tasks/fetch-absence-entries-for-transfer.1.0.0.json +23 -0
- package/touch/Tasks/fetch-advisors-for-transfer.1.0.0.json +23 -0
- package/touch/Tasks/fetch-permanent-chatrooms-for-transfer.1.0.0.json +23 -0
- package/touch/Tasks/fetch-rez-chatrooms-for-transfer.1.0.0.json +23 -0
- package/touch/Tasks/fetch-rezervations-for-transfer.1.0.0.json +22 -0
- package/touch/Tasks/get-absence-entry-task.1.0.0.json +23 -0
- package/touch/Tasks/get-available-slots-http.1.0.0.json +27 -0
- package/touch/Tasks/get-available-slots.1.0.0.json +24 -0
- package/touch/Tasks/get-chat-room-data-for-rezervation.1.0.0.json +23 -0
- package/touch/Tasks/get-chat-token.1.0.0.json +27 -0
- package/touch/Tasks/get-matrix-room-messages.1.0.0.json +25 -0
- package/touch/Tasks/get-matrix-sync.1.0.0.json +25 -0
- package/touch/Tasks/get-rezervation-data-task.1.0.0.json +22 -0
- package/touch/Tasks/get-rezervation-state-task.1.0.0.json +22 -0
- package/touch/Tasks/get-rezervations-task.1.0.0.json +21 -0
- package/touch/Tasks/get-user-info-for-rezervation.1.0.0.json +24 -0
- package/touch/Tasks/get-video-call-url.1.0.0.json +17 -0
- package/touch/Tasks/invite-user-to-rezervation-room.1.0.0.json +27 -0
- package/touch/Tasks/join-chat-room-for-rezervation.1.0.0.json +28 -0
- package/touch/Tasks/join-matrix-room.1.0.0.json +27 -0
- package/touch/Tasks/join-user-to-room.1.0.0.json +27 -0
- package/touch/Tasks/merge-invited-user.1.0.0.json +17 -0
- package/touch/Tasks/merge-rezervation-update.1.0.0.json +16 -0
- package/touch/Tasks/merge-target-advisor-for-transfer.1.0.0.json +17 -0
- package/touch/Tasks/merge-update-body-for-randevu-update.1.0.0.json +16 -0
- package/touch/Tasks/merge-video-call-urls.1.0.0.json +17 -0
- package/touch/Tasks/query-chat-room-instances.1.0.0.json +23 -0
- package/touch/Tasks/remove-member-from-room.1.0.0.json +28 -0
- package/touch/Tasks/send-matrix-room-message.1.0.0.json +26 -0
- package/touch/Tasks/send-push-notification.1.0.0.json +26 -0
- package/touch/Tasks/send-sms-notification.1.0.0.json +26 -0
- package/touch/Tasks/set-chat-room-status-active.1.0.0.json +16 -0
- package/touch/Tasks/set-chat-room-status-deactive.1.0.0.json +16 -0
- package/touch/Tasks/set-previous-advisor.1.0.0.json +16 -0
- package/touch/Tasks/set-user-from-headers-for-rezervation.1.0.0.json +17 -0
- package/touch/Tasks/start-absence-entry-for-rezervation.1.0.0.json +21 -0
- package/touch/Tasks/start-chat-room-for-rezervation.1.0.0.json +20 -0
- package/touch/Tasks/start-notification-sender.1.0.0.json +20 -0
- package/touch/Tasks/start-permanent-chat-room.1.0.0.json +21 -0
- package/touch/Tasks/start-transfer-from-absence-entry.1.0.0.json +19 -0
- package/touch/Tasks/start-video-call.1.0.0.json +22 -0
- package/touch/Tasks/trigger-chat-room-deactivate.1.0.0.json +21 -0
- package/touch/Tasks/trigger-chat-room-transfer.1.0.0.json +21 -0
- package/touch/Tasks/trigger-chat-room-update.1.0.0.json +20 -0
- package/touch/Tasks/trigger-rezervation-add-invited-participant.1.0.0.json +20 -0
- package/touch/Tasks/trigger-rezervation-apply-update.1.0.0.json +20 -0
- package/touch/Tasks/trigger-rezervation-to-in-meet.1.0.0.json +20 -0
- package/touch/Tasks/trigger-rezervation-video-call-update.1.0.0.json +21 -0
- package/touch/Tasks/validate-date-for-rezervation.1.0.0.json +18 -0
- package/touch/Tasks/validate-slot-for-rezervation.1.0.0.json +24 -0
- package/touch/Tasks/validate-transfer-availability.1.0.0.json +23 -0
- package/touch/Views/.gitkeep +0 -0
- package/touch/Workflows/.gitkeep +0 -0
- package/touch/Workflows/absence-entry.http +458 -0
- package/touch/Workflows/absence-entry.json +179 -0
- package/touch/Workflows/add-participant-to-rezervation.http +47 -0
- package/touch/Workflows/add-participant-to-rezervation.json +340 -0
- package/touch/Workflows/chat-room.http +207 -0
- package/touch/Workflows/chat-room.json +452 -0
- package/touch/Workflows/investment-advisor.json +367 -0
- package/touch/Workflows/notification-sender.http +299 -0
- package/touch/Workflows/notification-sender.json +262 -0
- package/touch/Workflows/portfolio-manager.json +367 -0
- package/touch/Workflows/randevu-update.http +87 -0
- package/touch/Workflows/rezervation-start.json +467 -0
- package/touch/Workflows/rezervation-transfer.json +512 -0
- package/touch/Workflows/rezervation-update.http +87 -0
- package/touch/Workflows/rezervation-update.json +485 -0
- package/touch/Workflows/rezervation.http +214 -0
- package/touch/Workflows/rezervation.json +726 -0
- package/touch/Workflows/src/AllChatRoomsSuccessRule.csx +65 -0
- package/touch/Workflows/src/AlwaysTrueRule.csx +13 -0
- package/touch/Workflows/src/AnyChatRoomFailedRule.csx +64 -0
- package/touch/Workflows/src/AutoProcessRule.csx +38 -0
- package/touch/Workflows/src/BuildRezChatRoomPlanMapping.csx +160 -0
- package/touch/Workflows/src/CanStartRezervationTimerMapping.csx +48 -0
- package/touch/Workflows/src/CanStartTransferMapping.csx +14 -0
- package/touch/Workflows/src/CancelAbsenceEntryForRezervationMapping.csx +48 -0
- package/touch/Workflows/src/CancelAbsenceForRandevuUpdateMapping.csx +62 -0
- package/touch/Workflows/src/ChatRoomCreatedFailedRule.csx +54 -0
- package/touch/Workflows/src/ChatRoomCreatedSuccessRule.csx +54 -0
- package/touch/Workflows/src/ChatRoomRemoveMapping.csx +104 -0
- package/touch/Workflows/src/ChatRoomTransferInviteMapping.csx +109 -0
- package/touch/Workflows/src/ChatRoomTransferRemoveMapping.csx +71 -0
- package/touch/Workflows/src/ChatRoomUpdateMapping.csx +107 -0
- package/touch/Workflows/src/CheckAlreadyCompletedChatRoomMapping.csx +100 -0
- package/touch/Workflows/src/CheckDuplicatePortfolioManagerMapping.csx +119 -0
- package/touch/Workflows/src/CheckDuplicateRezervationMapping.csx +150 -0
- package/touch/Workflows/src/CheckExistingPermanentChatRoomMapping.csx +169 -0
- package/touch/Workflows/src/CheckRandevuTimeMapping.csx +67 -0
- package/touch/Workflows/src/CheckRezervationStateActiveOrInMeetRule.csx +14 -0
- package/touch/Workflows/src/CreateAbsenceEntryForRezervationMapping.csx +111 -0
- package/touch/Workflows/src/CreateAbsenceForRandevuUpdateMapping.csx +108 -0
- package/touch/Workflows/src/CreateChatRoomForRezervationMapping.csx +122 -0
- package/touch/Workflows/src/CreatePermanentChatRoomMapping.csx +140 -0
- package/touch/Workflows/src/CustomerControlToEndRule.csx +14 -0
- package/touch/Workflows/src/DetermineTransferTypeMapping.csx +92 -0
- package/touch/Workflows/src/EnrichRezervationsForTransferMapping.csx +495 -0
- package/touch/Workflows/src/ExecutePermanentChatRoomUpdateMapping.csx +124 -0
- package/touch/Workflows/src/ExecuteRezChatRoomTransferMapping.csx +95 -0
- package/touch/Workflows/src/ExecuteTransferMapping.csx +152 -0
- package/touch/Workflows/src/FetchAbsenceEntriesForTransferMapping.csx +116 -0
- package/touch/Workflows/src/FetchAdvisorsForTransferMapping.csx +145 -0
- package/touch/Workflows/src/FetchPermanentChatRoomsMapping.csx +128 -0
- package/touch/Workflows/src/FetchRezervationsForTransferMapping.csx +124 -0
- package/touch/Workflows/src/GetChatRoomDataForRezervationMapping.csx +100 -0
- package/touch/Workflows/src/GetChatTokenMapping.csx +85 -0
- package/touch/Workflows/src/GetRezervationDataForAddParticipantMapping.csx +105 -0
- package/touch/Workflows/src/GetRezervationDataForRandevuUpdateMapping.csx +110 -0
- package/touch/Workflows/src/GetRezervationDataMapping.csx +111 -0
- package/touch/Workflows/src/GetRezervationStateForRandevuUpdateMapping.csx +80 -0
- package/touch/Workflows/src/GetRezervationStateMapping.csx +92 -0
- package/touch/Workflows/src/GetUserInfoForRezervationMapping.csx +63 -0
- package/touch/Workflows/src/GetVideoCallUrlMapping.csx +62 -0
- package/touch/Workflows/src/HasChangedAdvisorRule.csx +28 -0
- package/touch/Workflows/src/HasChatIntegrationRule.csx +41 -0
- package/touch/Workflows/src/HasExistingPermanentRoomRule.csx +28 -0
- package/touch/Workflows/src/InviteAdvisorForRandevuUpdateMapping.csx +86 -0
- package/touch/Workflows/src/InviteNewAdvisorToRezervationRoomMapping.csx +78 -0
- package/touch/Workflows/src/InviteNewParticipantToRandevuRoomMapping.csx +88 -0
- package/touch/Workflows/src/InvitedUserMergeMapping.csx +77 -0
- package/touch/Workflows/src/InvitedUserNotAllowedRule.csx +71 -0
- package/touch/Workflows/src/InvitedUserNotInMeetRule.csx +19 -0
- package/touch/Workflows/src/IsNotfSentRule.csx +36 -0
- package/touch/Workflows/src/JoinChatRoomForAddParticipantMapping.csx +118 -0
- package/touch/Workflows/src/JoinChatRoomForRandevuStartMapping.csx +119 -0
- package/touch/Workflows/src/JoinChatRoomForRezervationMapping.csx +118 -0
- package/touch/Workflows/src/JoinMatrixRoomMapping.csx +100 -0
- package/touch/Workflows/src/JoinUserToRoomMapping.csx +118 -0
- package/touch/Workflows/src/LoginForAddParticipantChatMapping.csx +102 -0
- package/touch/Workflows/src/LoginForRandevuStartChatMapping.csx +96 -0
- package/touch/Workflows/src/MergeRezervationUpdateMapping.csx +82 -0
- package/touch/Workflows/src/MergeTargetAdvisorForTransferMapping.csx +79 -0
- package/touch/Workflows/src/MergeUpdateBodyForRandevuUpdateMapping.csx +91 -0
- package/touch/Workflows/src/NoExistingPermanentRoomRule.csx +23 -0
- package/touch/Workflows/src/NotificationCompleteAlwaysRule.csx +14 -0
- package/touch/Workflows/src/NotificationCompleteFromPendingRule.csx +41 -0
- package/touch/Workflows/src/NotificationCompleteFromSmsRule.csx +36 -0
- package/touch/Workflows/src/NotificationPushFromPendingRule.csx +42 -0
- package/touch/Workflows/src/NotificationPushFromSmsRule.csx +36 -0
- package/touch/Workflows/src/NotificationSmsPendingRule.csx +32 -0
- package/touch/Workflows/src/PermanentDoneRule.csx +44 -0
- package/touch/Workflows/src/PermanentProcessNextRule.csx +44 -0
- package/touch/Workflows/src/RezChatRoomProcessNextRule.csx +44 -0
- package/touch/Workflows/src/RezChatRoomsDoneRule.csx +44 -0
- package/touch/Workflows/src/SendPushNotificationMapping.csx +146 -0
- package/touch/Workflows/src/SendSmsNotificationMapping.csx +138 -0
- package/touch/Workflows/src/SetChatRoomStatusActiveMapping.csx +22 -0
- package/touch/Workflows/src/SetChatRoomStatusDeactiveMapping.csx +22 -0
- package/touch/Workflows/src/SetPreviousAdvisorMapping.csx +28 -0
- package/touch/Workflows/src/SetUserFromHeadersForRezervationMapping.csx +24 -0
- package/touch/Workflows/src/SlotAvailableRule.csx +33 -0
- package/touch/Workflows/src/SlotUnavailableRule.csx +33 -0
- package/touch/Workflows/src/StartChatRoomForRezervationMapping.csx +100 -0
- package/touch/Workflows/src/StartGetChatTokenForRezervationMapping.csx +71 -0
- package/touch/Workflows/src/StartNotificationForAdvisorMapping.csx +117 -0
- package/touch/Workflows/src/StartNotificationForRezervationFromUserInfoMapping.csx +128 -0
- package/touch/Workflows/src/StartNotificationForUserMapping.csx +117 -0
- package/touch/Workflows/src/StartPermanentChatRoomMapping.csx +92 -0
- package/touch/Workflows/src/StartTransferFromAbsenceEntryMapping.csx +94 -0
- package/touch/Workflows/src/StartVideoCallCustomerSubFlowMapping.csx +37 -0
- package/touch/Workflows/src/StartVideoCallForInvitedParticipantMapping.csx +54 -0
- package/touch/Workflows/src/StartVideoCallForRandevuStartMapping.csx +70 -0
- package/touch/Workflows/src/StartVideoCallStaffSubFlowMapping.csx +37 -0
- package/touch/Workflows/src/StateActiveForUpdateRule.csx +14 -0
- package/touch/Workflows/src/StateActiveRule.csx +14 -0
- package/touch/Workflows/src/StateInMeetRule.csx +14 -0
- package/touch/Workflows/src/StateNotActiveForUpdateRule.csx +14 -0
- package/touch/Workflows/src/StateNotActiveOrInMeetRule.csx +14 -0
- package/touch/Workflows/src/StatusCustomerEnterRule.csx +25 -0
- package/touch/Workflows/src/StatusStaffEnterRule.csx +25 -0
- package/touch/Workflows/src/SyncWorkingHoursRule.csx +46 -0
- package/touch/Workflows/src/TokenSuccessRule.csx +24 -0
- package/touch/Workflows/src/TransferAllDoneRule.csx +50 -0
- package/touch/Workflows/src/TransferHasInvalidRule.csx +34 -0
- package/touch/Workflows/src/TransferProcessNextRule.csx +50 -0
- package/touch/Workflows/src/TriggerChatRoomDeactivateMapping.csx +77 -0
- package/touch/Workflows/src/TriggerChatRoomTransferMapping.csx +93 -0
- package/touch/Workflows/src/TriggerChatRoomUpdateMapping.csx +99 -0
- package/touch/Workflows/src/TriggerRezervationAddInvitedParticipantMapping.csx +77 -0
- package/touch/Workflows/src/TriggerRezervationApplyUpdateMapping.csx +66 -0
- package/touch/Workflows/src/TriggerRezervationToInMeetMapping.csx +69 -0
- package/touch/Workflows/src/TriggerRezervationVideoCallUpdateMapping.csx +67 -0
- package/touch/Workflows/src/ValidateDateForRezervationMapping.csx +60 -0
- package/touch/Workflows/src/ValidateSlotForRandevuUpdateMapping.csx +211 -0
- package/touch/Workflows/src/ValidateSlotForRezervationMapping.csx +246 -0
- package/touch/Workflows/src/ValidateTransferMapping.csx +243 -0
- package/touch/Workflows/src/VideoCallUrlUpdateMergeMapping.csx +141 -0
- package/touch/Workflows/start-chat.json +217 -0
- package/touch/Workflows/start-video-call.http +93 -0
- package/touch/Workflows/start-video-call.json +206 -0
- package/vnext.config.json +58 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Threading.Tasks;
|
|
4
|
+
using BBT.Workflow.Scripting;
|
|
5
|
+
using BBT.Workflow.Definitions;
|
|
6
|
+
|
|
7
|
+
/// <summary>
|
|
8
|
+
/// Merges incoming videoCallUrls into rezervation instance data.
|
|
9
|
+
/// Appends new entries to existing videoCallUrls array.
|
|
10
|
+
/// </summary>
|
|
11
|
+
public class VideoCallUrlUpdateMergeMapping : ScriptBase, IMapping
|
|
12
|
+
{
|
|
13
|
+
public Task<ScriptResponse> InputHandler(WorkflowTask task, ScriptContext context)
|
|
14
|
+
{
|
|
15
|
+
return Task.FromResult(new ScriptResponse());
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public Task<ScriptResponse> OutputHandler(ScriptContext context)
|
|
19
|
+
{
|
|
20
|
+
var instanceData = context.Instance?.Data;
|
|
21
|
+
var incomingBody = context.Body;
|
|
22
|
+
var existingList = GetVideoCallUrlsList(instanceData);
|
|
23
|
+
var incomingList = GetIncomingEntries(incomingBody, instanceData);
|
|
24
|
+
if (incomingList != null && incomingList.Count > 0)
|
|
25
|
+
{
|
|
26
|
+
foreach (var item in incomingList)
|
|
27
|
+
{
|
|
28
|
+
if (item == null || item.Count == 0) continue;
|
|
29
|
+
string participantId = null;
|
|
30
|
+
string url = string.Empty;
|
|
31
|
+
foreach (var kv in item)
|
|
32
|
+
{
|
|
33
|
+
participantId = kv.Key;
|
|
34
|
+
url = kv.Value ?? string.Empty;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
if (string.IsNullOrEmpty(participantId)) continue;
|
|
38
|
+
int existingIdx = -1;
|
|
39
|
+
for (int i = 0; i < existingList.Count; i++)
|
|
40
|
+
{
|
|
41
|
+
var d = existingList[i];
|
|
42
|
+
if (d != null && d.ContainsKey(participantId))
|
|
43
|
+
{
|
|
44
|
+
existingIdx = i;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (existingIdx >= 0)
|
|
49
|
+
existingList[existingIdx][participantId] = url;
|
|
50
|
+
else
|
|
51
|
+
existingList.Add(new Dictionary<string, string> { { participantId, url } });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
var dataList = new List<Dictionary<string, object>>();
|
|
56
|
+
foreach (var d in existingList)
|
|
57
|
+
{
|
|
58
|
+
var objDict = new Dictionary<string, object>();
|
|
59
|
+
foreach (var kv in d)
|
|
60
|
+
objDict[kv.Key] = kv.Value;
|
|
61
|
+
dataList.Add(objDict);
|
|
62
|
+
}
|
|
63
|
+
return Task.FromResult(new ScriptResponse
|
|
64
|
+
{
|
|
65
|
+
Data = new Dictionary<string, object> { { "videoCallUrls", dataList } }
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private List<Dictionary<string, string>> GetIncomingEntries(dynamic body, dynamic instanceData)
|
|
70
|
+
{
|
|
71
|
+
var fromBody = TryGetVideoCallUrlToAdd(body);
|
|
72
|
+
if (fromBody != null && fromBody.Count > 0) return fromBody;
|
|
73
|
+
var fromInstance = TryGetVideoCallUrlToAdd(instanceData);
|
|
74
|
+
if (fromInstance != null && fromInstance.Count > 0) return fromInstance;
|
|
75
|
+
if (body != null)
|
|
76
|
+
{
|
|
77
|
+
var fromBodyUrls = GetVideoCallUrlsList(body);
|
|
78
|
+
if (fromBodyUrls != null && fromBodyUrls.Count > 0) return fromBodyUrls;
|
|
79
|
+
}
|
|
80
|
+
return new List<Dictionary<string, string>>();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private List<Dictionary<string, string>> TryGetVideoCallUrlToAdd(dynamic source)
|
|
84
|
+
{
|
|
85
|
+
if (source == null) return null;
|
|
86
|
+
try
|
|
87
|
+
{
|
|
88
|
+
if (!HasProperty(source, "videoCallUrlToAdd")) return null;
|
|
89
|
+
var toAdd = source.videoCallUrlToAdd;
|
|
90
|
+
if (toAdd == null) return null;
|
|
91
|
+
var stringDict = new Dictionary<string, string>();
|
|
92
|
+
var dictObj = toAdd as IDictionary<string, object>;
|
|
93
|
+
if (dictObj != null && dictObj.Count > 0)
|
|
94
|
+
{
|
|
95
|
+
foreach (var kv in dictObj)
|
|
96
|
+
stringDict[kv.Key] = kv.Value?.ToString() ?? string.Empty;
|
|
97
|
+
}
|
|
98
|
+
else
|
|
99
|
+
{
|
|
100
|
+
var dictStr = toAdd as IDictionary<string, string>;
|
|
101
|
+
if (dictStr == null || dictStr.Count == 0) return null;
|
|
102
|
+
foreach (var kv in dictStr)
|
|
103
|
+
stringDict[kv.Key] = kv.Value ?? string.Empty;
|
|
104
|
+
}
|
|
105
|
+
if (stringDict.Count == 0) return null;
|
|
106
|
+
return new List<Dictionary<string, string>> { stringDict };
|
|
107
|
+
}
|
|
108
|
+
catch { }
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private List<Dictionary<string, string>> GetVideoCallUrlsList(dynamic source)
|
|
113
|
+
{
|
|
114
|
+
if (source == null) return new List<Dictionary<string, string>>();
|
|
115
|
+
try
|
|
116
|
+
{
|
|
117
|
+
if (!HasProperty(source, "videoCallUrls")) return new List<Dictionary<string, string>>();
|
|
118
|
+
var urls = source.videoCallUrls;
|
|
119
|
+
if (urls == null) return new List<Dictionary<string, string>>();
|
|
120
|
+
var list = urls as IEnumerable<object>;
|
|
121
|
+
if (list == null) return new List<Dictionary<string, string>>();
|
|
122
|
+
var result = new List<Dictionary<string, string>>();
|
|
123
|
+
foreach (var item in list)
|
|
124
|
+
{
|
|
125
|
+
var dict = item as IDictionary<string, object>;
|
|
126
|
+
if (dict != null)
|
|
127
|
+
{
|
|
128
|
+
var stringDict = new Dictionary<string, string>();
|
|
129
|
+
foreach (var kv in dict)
|
|
130
|
+
stringDict[kv.Key] = kv.Value?.ToString() ?? string.Empty;
|
|
131
|
+
result.Add(stringDict);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
catch
|
|
137
|
+
{
|
|
138
|
+
return new List<Dictionary<string, string>>();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "start-chat",
|
|
3
|
+
"flow": "sys-flows",
|
|
4
|
+
"domain": "touch",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"flowVersion": "2.0.0",
|
|
7
|
+
"tags": [
|
|
8
|
+
"new"
|
|
9
|
+
],
|
|
10
|
+
"attributes": {
|
|
11
|
+
"type": "S",
|
|
12
|
+
"labels": [
|
|
13
|
+
{
|
|
14
|
+
"label": "Start Chat",
|
|
15
|
+
"language": "en-US"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"label": "Mesaj Başlat",
|
|
19
|
+
"language": "tr-TR"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"functions": [],
|
|
23
|
+
"features": [],
|
|
24
|
+
"extensions": [],
|
|
25
|
+
"sharedTransitions": [],
|
|
26
|
+
"startTransition": {
|
|
27
|
+
"key": "start",
|
|
28
|
+
"target": "chat-init",
|
|
29
|
+
"versionStrategy": "Major",
|
|
30
|
+
"triggerType": 0,
|
|
31
|
+
"labels": [
|
|
32
|
+
{
|
|
33
|
+
"label": "Start",
|
|
34
|
+
"language": "en-US"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"label": "Başla",
|
|
38
|
+
"language": "tr-TR"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"onExecutionTasks": [
|
|
42
|
+
{
|
|
43
|
+
"order": 1,
|
|
44
|
+
"task": {
|
|
45
|
+
"domain": "touch",
|
|
46
|
+
"flow": "sys-tasks",
|
|
47
|
+
"key": "check-existing-permanent-chat-room",
|
|
48
|
+
"version": "1.0.0"
|
|
49
|
+
},
|
|
50
|
+
"mapping": {
|
|
51
|
+
"location": "./src/CheckExistingPermanentChatRoomMapping.csx",
|
|
52
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgY2hlY2stZXhpc3RpbmctcGVybWFuZW50LWNoYXQtcm9vbSBEYXByU2VydmljZVRhc2sgKFR5cGUgMykuCi8vLyBDYWxscyBnZXQtY2hhdC1yb29tcyBmbG93IGZ1bmN0aW9uIHdpdGggdXNlciBhbmQgcm9vbVR5cGU9cGVybWFuZW50IGZyb20gSW5zdGFuY2VEYXRhLgovLy8gT3V0cHV0OiBoYXNFeGlzdGluZ1Blcm1hbmVudFJvb20gKGJvb2wpLCBleGlzdGluZ1Jvb21BZHZpc29yTWF0Y2hlcyAoYm9vbCksIGV4aXN0aW5nQ2hhdFJvb21JbnN0YW5jZUtleSAoc3RyaW5nKS4KLy8vIC0gaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tOiB0cnVlIG9ubHkgaWYgdXNlciBoYXMgYSBwZXJtYW5lbnQgcm9vbSB3aXRoIHRoZSBzYW1lIGFkdmlzb3JUeXBlIChlLmcuIFBNIHJlcXVlc3Qgb25seSBjb3VudHMgUE0gcm9vbXM7IElBIHJlcXVlc3Qgb25seSBjb3VudHMgSUEgcm9vbXMpLgovLy8gLSBleGlzdGluZ1Jvb21BZHZpc29yTWF0Y2hlczogdHJ1ZSBpZiB0aGF0IHJvb20ncyBhZHZpc29ySWQgYWxzbyBtYXRjaGVzOyBmYWxzZSBvdGhlcndpc2UuCi8vLyAtIGV4aXN0aW5nQ2hhdFJvb21JbnN0YW5jZUtleToga2V5IG9mIG1hdGNoaW5nIHJvb20sIG9yIGZpcnN0IHJvb20gd2l0aCBzYW1lIGFkdmlzb3JUeXBlIHdoZW4gbm8gbWF0Y2ggKGZvciB0cmFuc2ZlcikuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBDaGVja0V4aXN0aW5nUGVybWFuZW50Q2hhdFJvb21NYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBzZXJ2aWNlVGFzayA9IHRhc2sgYXMgRGFwclNlcnZpY2VUYXNrOwogICAgICAgIGlmIChzZXJ2aWNlVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGEgRGFwclNlcnZpY2VUYXNrIik7CgogICAgICAgIHZhciBhcHBJZCA9IEdldENvbmZpZ1ZhbHVlKCJEQVBSX0FQUF9JRCIpOwogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoYXBwSWQpKQogICAgICAgICAgICBzZXJ2aWNlVGFzay5TZXRBcHBJZChhcHBJZCk7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiSW5zdGFuY2UgZGF0YSBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgdXNlciA9IEdldFN0cmluZyhkYXRhLCAidXNlciIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigidXNlciBpcyByZXF1aXJlZCBpbiBpbnN0YW5jZSBkYXRhIik7CgogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgICJ1c2VyPSIgKyBVcmkuRXNjYXBlRGF0YVN0cmluZyh1c2VyLlRyaW0oKSksCiAgICAgICAgICAgICJyb29tVHlwZT1wZXJtYW5lbnQiLAogICAgICAgICAgICAic3RhdGU9YWN0aXZhdGVkIiwKICAgICAgICAgICAgInBhZ2VTaXplPTIwIgogICAgICAgIH07CiAgICAgICAgc2VydmljZVRhc2suU2V0UXVlcnlTdHJpbmcoc3RyaW5nLkpvaW4oIiYiLCBxdWVyeVBhcmFtcykpOwoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICB2YXIgYWR2aXNvcklkID0gR2V0U3RyaW5nKGRhdGEsICJhZHZpc29ySWQiKTsKICAgICAgICB2YXIgYWR2aXNvclR5cGUgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3JUeXBlIik7CgogICAgICAgIGJvb2wgaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tID0gZmFsc2U7CiAgICAgICAgYm9vbCBleGlzdGluZ1Jvb21BZHZpc29yTWF0Y2hlcyA9IGZhbHNlOwogICAgICAgIHN0cmluZyBleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkgPSBudWxsOwogICAgICAgIHN0cmluZyBmaXJzdFJvb21XaXRoU2FtZUFkdmlzb3JUeXBlS2V5ID0gbnVsbDsKCiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3MgPT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSByZXNwb25zZT8uZGF0YSA/PyByZXNwb25zZT8uRGF0YSA/PyByZXNwb25zZTsKICAgICAgICAgICAgdmFyIHJvb21zID0gR2V0Um9vbXNMaXN0KHJlc3BvbnNlRGF0YSk7CiAgICAgICAgICAgIGlmIChyb29tcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgcm9vbSBpbiByb29tcykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcm9vbUFkdmlzb3JUeXBlID0gR2V0U3RyaW5nKHJvb20sICJhZHZpc29yVHlwZSIpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLkVxdWFscyhyb29tQWR2aXNvclR5cGU/LlRyaW0oKSwgYWR2aXNvclR5cGU/LlRyaW0oKSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgcm9vbUtleSA9IEdldFN0cmluZyhyb29tLCAiaW5zdGFuY2VLZXkiKSA/PyBHZXRTdHJpbmcocm9vbSwgImtleSIpOwogICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHJvb21LZXkpKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0Um9vbVdpdGhTYW1lQWR2aXNvclR5cGVLZXkgPT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSb29tV2l0aFNhbWVBZHZpc29yVHlwZUtleSA9IHJvb21LZXk7CgogICAgICAgICAgICAgICAgICAgIGhhc0V4aXN0aW5nUGVybWFuZW50Um9vbSA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHZhciByb29tQWR2aXNvcklkID0gR2V0U3RyaW5nKHJvb20sICJhZHZpc29ySWQiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLkVxdWFscyhyb29tQWR2aXNvcklkPy5UcmltKCksIGFkdmlzb3JJZD8uVHJpbSgpLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUm9vbUFkdmlzb3JNYXRjaGVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdDaGF0Um9vbUluc3RhbmNlS2V5ID0gcm9vbUtleTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChoYXNFeGlzdGluZ1Blcm1hbmVudFJvb20gJiYgZXhpc3RpbmdDaGF0Um9vbUluc3RhbmNlS2V5ID09IG51bGwpCiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdDaGF0Um9vbUluc3RhbmNlS2V5ID0gZmlyc3RSb29tV2l0aFNhbWVBZHZpc29yVHlwZUtleTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICB7CiAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tID0gaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tLAogICAgICAgICAgICAgICAgZXhpc3RpbmdSb29tQWR2aXNvck1hdGNoZXMgPSBleGlzdGluZ1Jvb21BZHZpc29yTWF0Y2hlcywKICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hhdFJvb21JbnN0YW5jZUtleSA9IGV4aXN0aW5nQ2hhdFJvb21JbnN0YW5jZUtleQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBTeXN0ZW0uQ29sbGVjdGlvbnMuSUVudW1lcmFibGUgR2V0Um9vbXNMaXN0KGR5bmFtaWMgcmVzcG9uc2VEYXRhKQogICAgewogICAgICAgIGlmIChyZXNwb25zZURhdGEgPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICAvLyBEaXJlY3Qgcm9vbXMKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KHJlc3BvbnNlRGF0YSwgInJvb21zIikgJiYgcmVzcG9uc2VEYXRhLnJvb21zICE9IG51bGwpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhLnJvb21zOwogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkocmVzcG9uc2VEYXRhLCAiZGF0YSIpICYmIHJlc3BvbnNlRGF0YS5kYXRhICE9IG51bGwgJiYgSGFzUHJvcGVydHkocmVzcG9uc2VEYXRhLmRhdGEsICJyb29tcyIpKQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YS5kYXRhLnJvb21zOwogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkocmVzcG9uc2VEYXRhLCAiRGF0YSIpICYmIHJlc3BvbnNlRGF0YS5EYXRhICE9IG51bGwgJiYgSGFzUHJvcGVydHkocmVzcG9uc2VEYXRhLkRhdGEsICJyb29tcyIpKQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YS5EYXRhLnJvb21zOwoKICAgICAgICAgICAgLy8gV3JhcHBlZDogY2hlY2tFeGlzdGluZ0RhdGEuaXRlbXNbXS5nZXRDaGF0Um9vbXMucm9vbXMgKHJ1bnRpbWUgdGFzayByZXN1bHQgc2hhcGUpCiAgICAgICAgICAgIHZhciBjaGVja0V4aXN0aW5nID0gR2V0VmFsdWUocmVzcG9uc2VEYXRhLCAiY2hlY2tFeGlzdGluZ0RhdGEiKSA/PyBHZXRWYWx1ZShyZXNwb25zZURhdGEsICJkYXRhIik7CiAgICAgICAgICAgIHZhciByb290ID0gY2hlY2tFeGlzdGluZyA/PyByZXNwb25zZURhdGE7CiAgICAgICAgICAgIGlmIChyb290ICE9IG51bGwgJiYgSGFzUHJvcGVydHkocm9vdCwgIml0ZW1zIikgJiYgcm9vdC5pdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSByb290Lml0ZW1zIGFzIFN5c3RlbS5Db2xsZWN0aW9ucy5JRW51bWVyYWJsZTsKICAgICAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBpdGVtIGluIGl0ZW1zKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnZXRDaGF0Um9vbXMgPSBHZXRWYWx1ZShpdGVtLCAiZ2V0Q2hhdFJvb21zIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRDaGF0Um9vbXMgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShnZXRDaGF0Um9vbXMsICJyb29tcyIpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcm9vbXMgPSBHZXRWYWx1ZShnZXRDaGF0Um9vbXMsICJyb29tcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvb21zIGlzIFN5c3RlbS5Db2xsZWN0aW9ucy5JRW51bWVyYWJsZSBlbiAmJiBlbiAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIG9iamVjdCBHZXRWYWx1ZShkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICAgICAgcmV0dXJuIEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"states": [
|
|
58
|
+
{
|
|
59
|
+
"key": "chat-init",
|
|
60
|
+
"stateType": 1,
|
|
61
|
+
"versionStrategy": "Minor",
|
|
62
|
+
"labels": [
|
|
63
|
+
{
|
|
64
|
+
"label": "Initialize Chat",
|
|
65
|
+
"language": "en-US"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"label": "Sohbet Başlatılıyor",
|
|
69
|
+
"language": "tr-TR"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"transitions": [
|
|
73
|
+
{
|
|
74
|
+
"key": "open-existing-room",
|
|
75
|
+
"target": "in-chat",
|
|
76
|
+
"triggerType": 1,
|
|
77
|
+
"versionStrategy": "Minor",
|
|
78
|
+
"labels": [
|
|
79
|
+
{
|
|
80
|
+
"label": "Open Existing Room",
|
|
81
|
+
"language": "en-US"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"label": "Mevcut Odayı Aç",
|
|
85
|
+
"language": "tr-TR"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"rule": {
|
|
89
|
+
"location": "./src/HasExistingPermanentRoomRule.csx",
|
|
90
|
+
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKCi8vLyA8c3VtbWFyeT4KLy8vIENvbmRpdGlvbiBmb3IgY2hhdC1pbml0OiBoYXNFeGlzdGluZ1Blcm1hbmVudFJvb20gPT0gdHJ1ZSBBTkQgZXhpc3RpbmdSb29tQWR2aXNvck1hdGNoZXMgPT0gdHJ1ZSAtPiBvcGVuLWV4aXN0aW5nLXJvb20gdHJhbnNpdGlvbiB0byBpbi1jaGF0LgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgSGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tUnVsZSA6IFNjcmlwdEJhc2UsIElDb25kaXRpb25NYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPGJvb2w+IEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KGZhbHNlKTsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQoR2V0Qm9vbChkYXRhLCAiaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tIikgJiYgR2V0Qm9vbChkYXRhLCAiZXhpc3RpbmdSb29tQWR2aXNvck1hdGNoZXMiKSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChmYWxzZSk7IH0KICAgIH0KCiAgICBwcml2YXRlIGJvb2wgR2V0Qm9vbChkeW5hbWljIGRhdGEsIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChkYXRhID09IG51bGwgfHwgIUhhc1Byb3BlcnR5KGRhdGEsIG5hbWUpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKGRhdGEsIG5hbWUpOwogICAgICAgIGlmICh2ID09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAodiBpcyBib29sIGIpIHJldHVybiBiOwogICAgICAgIHJldHVybiBzdHJpbmcuRXF1YWxzKHYuVG9TdHJpbmcoKSwgInRydWUiLCBTeXN0ZW0uU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSk7CiAgICB9Cn0K"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"key": "to-change-advisor",
|
|
95
|
+
"target": "in-chat",
|
|
96
|
+
"triggerType": 1,
|
|
97
|
+
"versionStrategy": "Minor",
|
|
98
|
+
"labels": [
|
|
99
|
+
{
|
|
100
|
+
"label": "Change Advisor",
|
|
101
|
+
"language": "en-US"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"label": "Danışmanı Değiştir",
|
|
105
|
+
"language": "tr-TR"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"rule": {
|
|
109
|
+
"location": "./src/HasChangedAdvisorRule.csx",
|
|
110
|
+
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKCi8vLyA8c3VtbWFyeT4KLy8vIENvbmRpdGlvbiBmb3IgY2hhdC1pbml0OiBoYXNFeGlzdGluZ1Blcm1hbmVudFJvb20gPT0gdHJ1ZSBBTkQgZXhpc3RpbmdSb29tQWR2aXNvck1hdGNoZXMgPT0gZmFsc2UgLT4gdG8tY2hhbmdlLWFkdmlzb3IgdHJhbnNpdGlvbiB0byBpbi1jaGF0LgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgSGFzQ2hhbmdlZEFkdmlzb3JSdWxlIDogU2NyaXB0QmFzZSwgSUNvbmRpdGlvbk1hcHBpbmcKewogICAgcHVibGljIFRhc2s8Ym9vbD4gSGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpIHJldHVybiBUYXNrLkZyb21SZXN1bHQoZmFsc2UpOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChHZXRCb29sKGRhdGEsICJoYXNFeGlzdGluZ1Blcm1hbmVudFJvb20iKSAmJiAhR2V0Qm9vbChkYXRhLCAiZXhpc3RpbmdSb29tQWR2aXNvck1hdGNoZXMiKSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChmYWxzZSk7IH0KICAgIH0KCiAgICBwcml2YXRlIGJvb2wgR2V0Qm9vbChkeW5hbWljIGRhdGEsIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChkYXRhID09IG51bGwgfHwgIUhhc1Byb3BlcnR5KGRhdGEsIG5hbWUpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKGRhdGEsIG5hbWUpOwogICAgICAgIGlmICh2ID09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAodiBpcyBib29sIGIpIHJldHVybiBiOwogICAgICAgIHJldHVybiBzdHJpbmcuRXF1YWxzKHYuVG9TdHJpbmcoKSwgInRydWUiLCBTeXN0ZW0uU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSk7CiAgICB9Cn0K"
|
|
111
|
+
},
|
|
112
|
+
"onExecutionTasks": [
|
|
113
|
+
{
|
|
114
|
+
"order": 1,
|
|
115
|
+
"task": {
|
|
116
|
+
"domain": "touch",
|
|
117
|
+
"flow": "sys-tasks",
|
|
118
|
+
"key": "trigger-chat-room-transfer",
|
|
119
|
+
"version": "1.0.0"
|
|
120
|
+
},
|
|
121
|
+
"mapping": {
|
|
122
|
+
"location": "./src/TriggerChatRoomTransferMapping.csx",
|
|
123
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgdHJpZ2dlci1jaGF0LXJvb20tdHJhbnNmZXIgRGlyZWN0VHJpZ2dlclRhc2suCi8vLyBUcmlnZ2VycyB0cmFuc2ZlciB0cmFuc2l0aW9uIG9uIGNoYXQtcm9vbSBpbnN0YW5jZS4gVXNlcyBleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkgYW5kIG5ld0Fkdmlzb3JJZCBmcm9tIHN0YXJ0LWNoYXQgaW5zdGFuY2UgZGF0YS4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFRyaWdnZXJDaGF0Um9vbVRyYW5zZmVyTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgdHJpZ2dlclRhc2sgPSB0YXNrIGFzIERpcmVjdFRyaWdnZXJUYXNrOwogICAgICAgIGlmICh0cmlnZ2VyVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGEgRGlyZWN0VHJpZ2dlclRhc2siKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIHZhciBleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkgPSBHZXRTdHJpbmcoZGF0YSwgImV4aXN0aW5nQ2hhdFJvb21JbnN0YW5jZUtleSIpOwogICAgICAgIHZhciBuZXdBZHZpc29ySWQgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3JJZCIpOwoKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImNoYXQtcm9vbS10cmFuc2Zlci1za2lwcGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7ICJ0cmFuc2ZlclRyaWdnZXJlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICAgICAgICAgeyAicmVhc29uIiwgIm1pc3NpbmctZXhpc3RpbmdDaGF0Um9vbUluc3RhbmNlS2V5IiB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShuZXdBZHZpc29ySWQpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImNoYXQtcm9vbS10cmFuc2Zlci1za2lwcGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7ICJ0cmFuc2ZlclRyaWdnZXJlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICAgICAgICAgeyAicmVhc29uIiwgIm1pc3NpbmctbmV3QWR2aXNvcklkIiB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgdHJpZ2dlclRhc2suU2V0RG9tYWluKCJ0b3VjaCIpOwogICAgICAgIHRyaWdnZXJUYXNrLlNldEZsb3coImNoYXQtcm9vbSIpOwogICAgICAgIHRyaWdnZXJUYXNrLlNldEtleShleGlzdGluZ0NoYXRSb29tSW5zdGFuY2VLZXkuVHJpbSgpKTsKICAgICAgICB0cmlnZ2VyVGFzay5TZXRUcmFuc2l0aW9uTmFtZSgidHJhbnNmZXIiKTsKICAgICAgICB0cmlnZ2VyVGFzay5TZXRCb2R5KG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PgogICAgICAgIHsKICAgICAgICAgICAgeyAibmV3QWR2aXNvcklkIiwgbmV3QWR2aXNvcklkLlRyaW0oKSB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgewogICAgICAgICAgICBEYXRhID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHsgeyAidHJhbnNmZXJUcmlnZ2VyZWQiLCB0cnVlIH0gfQogICAgICAgIH0pOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICBpZiAoY29udGV4dC5Cb2R5Py5pc1N1Y2Nlc3MgIT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJjaGF0LXJvb20tdHJhbnNmZXItZmFpbGVkIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGNvbnRleHQuQm9keT8uZXJyb3JNZXNzYWdlPy5Ub1N0cmluZygpID8/ICJDaGF0IHJvb20gdHJhbnNmZXIgZmFpbGVkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"key": "create-room-and-open",
|
|
130
|
+
"target": "in-chat",
|
|
131
|
+
"triggerType": 1,
|
|
132
|
+
"versionStrategy": "Minor",
|
|
133
|
+
"labels": [
|
|
134
|
+
{
|
|
135
|
+
"label": "Create Room and Open",
|
|
136
|
+
"language": "en-US"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"label": "Oda Oluştur ve Aç",
|
|
140
|
+
"language": "tr-TR"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"rule": {
|
|
144
|
+
"location": "./src/NoExistingPermanentRoomRule.csx",
|
|
145
|
+
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKCi8vLyA8c3VtbWFyeT4KLy8vIENvbmRpdGlvbiBmb3IgY2hhdC1pbml0OiBoYXNFeGlzdGluZ1Blcm1hbmVudFJvb20gIT0gdHJ1ZSAtPiBjcmVhdGUtcm9vbS1hbmQtb3BlbiB0cmFuc2l0aW9uICh3aXRoIHN0YXJ0LXBlcm1hbmVudC1jaGF0LXJvb20gdGFzaykgdG8gaW4tY2hhdC4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIE5vRXhpc3RpbmdQZXJtYW5lbnRSb29tUnVsZSA6IFNjcmlwdEJhc2UsIElDb25kaXRpb25NYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPGJvb2w+IEhhbmRsZXIoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KHRydWUpOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCFIYXNQcm9wZXJ0eShkYXRhLCAiaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tIikpIHJldHVybiBUYXNrLkZyb21SZXN1bHQodHJ1ZSk7CiAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShkYXRhLCAiaGFzRXhpc3RpbmdQZXJtYW5lbnRSb29tIik7CiAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHJldHVybiBUYXNrLkZyb21SZXN1bHQodHJ1ZSk7CiAgICAgICAgICAgIGlmICh2IGlzIGJvb2wgYikgcmV0dXJuIFRhc2suRnJvbVJlc3VsdCghYik7CiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQoIXN0cmluZy5FcXVhbHModi5Ub1N0cmluZygpLCAidHJ1ZSIsIFN5c3RlbS5TdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgcmV0dXJuIFRhc2suRnJvbVJlc3VsdCh0cnVlKTsgfQogICAgfQp9Cg=="
|
|
146
|
+
},
|
|
147
|
+
"onExecutionTasks": [
|
|
148
|
+
{
|
|
149
|
+
"order": 1,
|
|
150
|
+
"task": {
|
|
151
|
+
"domain": "touch",
|
|
152
|
+
"flow": "sys-tasks",
|
|
153
|
+
"key": "start-permanent-chat-room",
|
|
154
|
+
"version": "1.0.0"
|
|
155
|
+
},
|
|
156
|
+
"mapping": {
|
|
157
|
+
"location": "./src/StartPermanentChatRoomMapping.csx",
|
|
158
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBNYXBwaW5nIGZvciBzdGFydC1wZXJtYW5lbnQtY2hhdC1yb29tIFN0YXJ0VGFzayAoVHlwZSAxMSkuCi8vLyBTdGFydHMgY2hhdC1yb29tIGZsb3cgYXMgc3ViZmxvdyB3aXRoIGJvZHk6IHVzZXIsIGFkdmlzb3JUeXBlLCBhZHZpc29ySWQgZnJvbSBJbnN0YW5jZURhdGEsIHJvb21UeXBlICJwZXJtYW5lbnQiLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgU3RhcnRQZXJtYW5lbnRDaGF0Um9vbU1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHN0YXJ0VGFzayA9IHRhc2sgYXMgU3RhcnRUYXNrOwogICAgICAgIGlmIChzdGFydFRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIFN0YXJ0VGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkluc3RhbmNlIGRhdGEgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIHVzZXIgPSBHZXRTdHJpbmcoZGF0YSwgInVzZXIiKTsKICAgICAgICB2YXIgYWR2aXNvclR5cGUgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3JUeXBlIik7CiAgICAgICAgdmFyIGFkdmlzb3JJZCA9IEdldFN0cmluZyhkYXRhLCAiYWR2aXNvcklkIik7CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigidXNlciBpcyByZXF1aXJlZCIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGFkdmlzb3JJZCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJhZHZpc29ySWQgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoYWR2aXNvclR5cGUpKQogICAgICAgICAgICBhZHZpc29yVHlwZSA9ICJJQSI7CgogICAgICAgIHZhciBjaGF0Um9vbUtleSA9IE5vcm1hbGl6ZUZvcktleSh1c2VyKSArICItIiArIE5vcm1hbGl6ZUZvcktleShhZHZpc29yVHlwZSk7CgogICAgICAgIHN0YXJ0VGFzay5TZXREb21haW4oInRvdWNoIik7CiAgICAgICAgc3RhcnRUYXNrLlNldEZsb3coImNoYXQtcm9vbSIpOwogICAgICAgIHN0YXJ0VGFzay5TZXRLZXkoY2hhdFJvb21LZXkpOwogICAgICAgIHN0YXJ0VGFzay5TZXRTeW5jKHRydWUpOwogICAgICAgIHN0YXJ0VGFzay5TZXRCb2R5KG5ldwogICAgICAgIHsKICAgICAgICAgICAgdXNlciwKICAgICAgICAgICAgYWR2aXNvclR5cGUsCiAgICAgICAgICAgIGFkdmlzb3JJZCwKICAgICAgICAgICAgcm9vbVR5cGUgPSAicGVybWFuZW50IgogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBjaGF0Um9vbUluc3RhbmNlS2V5ID0gY2hhdFJvb21LZXkgfSB9KTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CiAgICAgICAgaWYgKGNvbnRleHQuQm9keT8uaXNTdWNjZXNzID09IHRydWUpCiAgICAgICAgewogICAgICAgICAgICB2YXIga2V5ID0gR2V0U3RyaW5nKGNvbnRleHQuQm9keSwgImtleSIpID8/IEdldFN0cmluZyhjb250ZXh0LkJvZHk/LmRhdGEgPz8gY29udGV4dC5Cb2R5Py5EYXRhLCAia2V5Iik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGtleSkpCiAgICAgICAgICAgICAgICBrZXkgPSBHZXRTdHJpbmcoY29udGV4dC5JbnN0YW5jZT8uRGF0YSwgImNoYXRSb29tSW5zdGFuY2VLZXkiKTsKICAgICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IG5ldyB7IGNoYXRSb29tSW5zdGFuY2VLZXkgPSBrZXkgfTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcmVzcG9uc2UuRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGF0Um9vbUluc3RhbmNlS2V5ID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgZXJyb3IgPSBjb250ZXh0LkJvZHk/LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSA/PyAiRmFpbGVkIHRvIHN0YXJ0IHBlcm1hbmVudCBjaGF0LXJvb20iCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQocmVzcG9uc2UpOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpPy5UcmltKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgTm9ybWFsaXplRm9yS2V5KHN0cmluZyB2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkodmFsdWUpKSByZXR1cm4gdmFsdWUgPz8gIiI7CiAgICAgICAgcmV0dXJuIHZhbHVlLlJlcGxhY2UoIjoiLCAiLSIpLlJlcGxhY2UoIiAiLCAiLSIpLlJlcGxhY2UoIkAiLCAiLSIpOwogICAgfQp9Cg=="
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"key": "in-chat",
|
|
167
|
+
"stateType": 2,
|
|
168
|
+
"versionStrategy": "Minor",
|
|
169
|
+
"labels": [
|
|
170
|
+
{
|
|
171
|
+
"label": "In Chat",
|
|
172
|
+
"language": "en-US"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"label": "Sohbette",
|
|
176
|
+
"language": "tr-TR"
|
|
177
|
+
}
|
|
178
|
+
],
|
|
179
|
+
"transitions": [
|
|
180
|
+
{
|
|
181
|
+
"key": "close-chat",
|
|
182
|
+
"target": "chat-closed",
|
|
183
|
+
"triggerType": 0,
|
|
184
|
+
"versionStrategy": "Minor",
|
|
185
|
+
"labels": [
|
|
186
|
+
{
|
|
187
|
+
"label": "Close Chat",
|
|
188
|
+
"language": "en-US"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"label": "Sohbeti Kapat",
|
|
192
|
+
"language": "tr-TR"
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"key": "chat-closed",
|
|
200
|
+
"stateType": 3,
|
|
201
|
+
"versionStrategy": "Minor",
|
|
202
|
+
"labels": [
|
|
203
|
+
{
|
|
204
|
+
"label": "Chat Closed",
|
|
205
|
+
"language": "en-US"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"label": "Sohbet Kapatıldı",
|
|
209
|
+
"language": "tr-TR"
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
],
|
|
214
|
+
"subFlowType": "S",
|
|
215
|
+
"timeout": null
|
|
216
|
+
}
|
|
217
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
###############################################################################
|
|
2
|
+
# Start Video Call Workflow - HTTP Test File
|
|
3
|
+
#
|
|
4
|
+
# This file tests the start-video-call subprocess which:
|
|
5
|
+
# - Is triggered by rezervation staff-start-meet (status=staff-enter) or customer-enter (status=customer-enter)
|
|
6
|
+
# - Builds video call page URL via get-video-call-url Script task for the participant
|
|
7
|
+
# - Flow: start → check-customer-staff → creating-token → completed | retry
|
|
8
|
+
#
|
|
9
|
+
# Can be tested standalone (direct start) or as triggered by rezervation transitions.
|
|
10
|
+
#
|
|
11
|
+
# Prerequisites:
|
|
12
|
+
# 1. vNext Runtime running on localhost:4201
|
|
13
|
+
###############################################################################
|
|
14
|
+
|
|
15
|
+
@baseUrl = http://localhost:4201
|
|
16
|
+
@apiVersion = 1
|
|
17
|
+
@domain = touch
|
|
18
|
+
@workflow = start-video-call
|
|
19
|
+
|
|
20
|
+
###############################################################################
|
|
21
|
+
# #
|
|
22
|
+
# START VIDEO CALL (Direct - for testing) #
|
|
23
|
+
# #
|
|
24
|
+
###############################################################################
|
|
25
|
+
|
|
26
|
+
# Use same key format as rezervation subprocess: {rezervationKey}-token-{status}
|
|
27
|
+
@rezervationKey = rez-{{$timestamp}}
|
|
28
|
+
|
|
29
|
+
### Start Video Call (Staff Enter)
|
|
30
|
+
# Simulates staff-start-meet transition. Gets token for advisor.
|
|
31
|
+
# @name startVideoCallStaff
|
|
32
|
+
POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
|
|
33
|
+
Content-Type: application/json
|
|
34
|
+
Accept-Language: tr-TR
|
|
35
|
+
X-Request-Id: {{$guid}}
|
|
36
|
+
|
|
37
|
+
{
|
|
38
|
+
"key": "{{rezervationKey}}-token-staff-enter",
|
|
39
|
+
"tags": ["video-call", "rezervation"],
|
|
40
|
+
"attributes": {
|
|
41
|
+
"roomName": "{{rezervationKey}}",
|
|
42
|
+
"status": "staff-enter",
|
|
43
|
+
"user": "core.user.user-001",
|
|
44
|
+
"advisor": "touch.portfolio-manager.pm-001"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
### Start Video Call (Customer Enter)
|
|
49
|
+
# Simulates customer-enter transition. Gets token for user.
|
|
50
|
+
# @name startVideoCallCustomer
|
|
51
|
+
POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
|
|
52
|
+
Content-Type: application/json
|
|
53
|
+
Accept-Language: tr-TR
|
|
54
|
+
X-Request-Id: {{$guid}}
|
|
55
|
+
|
|
56
|
+
{
|
|
57
|
+
"key": "{{rezervationKey}}-token-customer-enter",
|
|
58
|
+
"tags": ["video-call", "rezervation"],
|
|
59
|
+
"attributes": {
|
|
60
|
+
"roomName": "{{rezervationKey}}",
|
|
61
|
+
"status": "customer-enter",
|
|
62
|
+
"user": "core.user.user-001",
|
|
63
|
+
"advisor": "touch.portfolio-manager.pm-001"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
###############################################################################
|
|
68
|
+
# #
|
|
69
|
+
# GET INSTANCE / RETRY #
|
|
70
|
+
# #
|
|
71
|
+
###############################################################################
|
|
72
|
+
|
|
73
|
+
@instanceId = <paste-instance-id-from-start-response>
|
|
74
|
+
|
|
75
|
+
### Get Start Video Call Instance
|
|
76
|
+
# Inspect state and videoCallUrl / getTokenSuccess / getTokenError.
|
|
77
|
+
# @name getStartVideoCallInstance
|
|
78
|
+
GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{instanceId}}
|
|
79
|
+
Accept: application/json
|
|
80
|
+
Accept-Language: tr-TR
|
|
81
|
+
X-Request-Id: {{$guid}}
|
|
82
|
+
|
|
83
|
+
### Retry (creating-token → creating-token)
|
|
84
|
+
# When URL generation fails, manually retry.
|
|
85
|
+
# @name retryGetToken
|
|
86
|
+
PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{instanceId}}/transitions/retry?sync=true
|
|
87
|
+
Content-Type: application/json
|
|
88
|
+
Accept-Language: tr-TR
|
|
89
|
+
X-Request-Id: {{$guid}}
|
|
90
|
+
|
|
91
|
+
{
|
|
92
|
+
"attributes": {}
|
|
93
|
+
}
|