|
185 | 185 |
|
186 | 186 | $patterns = []; |
187 | 187 |
|
| 188 | + // Recursively emits {args.chat.<path>} patterns for every nested key, |
| 189 | + // so deeply nested structures (e.g. incoming_chat.payload_array) are listed. |
| 190 | + $patternWalk = function ($prefix, $value, $depth = 0) use (&$patterns, &$patternWalk) { |
| 191 | + if (is_array($value) || is_object($value)) { |
| 192 | + if ($depth > 8) { |
| 193 | + $patterns[] = '{' . $prefix . '} = ' . json_encode($value); |
| 194 | + return; |
| 195 | + } |
| 196 | + foreach ($value as $key => $val) { |
| 197 | + $patternWalk($prefix . '.' . $key, $val, $depth + 1); |
| 198 | + } |
| 199 | + } else { |
| 200 | + $patterns[] = '{' . $prefix . '} = ' . (is_bool($value) ? (int)$value : $value); |
| 201 | + } |
| 202 | + }; |
| 203 | + |
188 | 204 | foreach ($chat->getState() as $stateKey => $stateAttr) { |
189 | 205 | $patterns[] = '{args.chat.' . $stateKey .'} = ' . $stateAttr; |
190 | 206 | } |
|
193 | 209 | 'online_user' => ['online_attr_system_array','online_attr_array','current_page_params','previous_chat','chat'], |
194 | 210 | 'department' => ['bot_configuration_array','is_overloaded','is_online'], |
195 | 211 | 'iwh' => ['conditions_array'], |
196 | | - 'incoming_chat' => ['incoming'] |
| 212 | + 'incoming_chat' => ['incoming','payload_array'] |
197 | 213 | ]; |
198 | 214 |
|
199 | 215 | foreach (['referrer_params','abnd','drpd','subject_ids','subject_ids_list','department','chat_variables_array','user','online_user', |
|
227 | 243 | if (isset($subAttributes[$dynamicAttr])){ |
228 | 244 | foreach ($subAttributes[$dynamicAttr] as $subStateAttr) { |
229 | 245 | if (is_array($chat?->{$dynamicAttr}?->{$subStateAttr}) || is_object($chat?->{$dynamicAttr}?->{$subStateAttr})) { |
230 | | - foreach ($chat->{$dynamicAttr}->{$subStateAttr} as $stateSubKey => $subStateAttrVal) { |
231 | | - $patterns[] = '{args.chat.' . $dynamicAttr .'.' . $subStateAttr . '.' . $stateSubKey . '} = ' . ((is_array($subStateAttrVal) || is_object($subStateAttrVal)) ? json_encode($subStateAttrVal) : $subStateAttrVal); |
232 | | - } |
| 246 | + $patternWalk('args.chat.' . $dynamicAttr . '.' . $subStateAttr, $chat->{$dynamicAttr}->{$subStateAttr}); |
233 | 247 | } |
234 | 248 | } |
235 | 249 | } |
|
0 commit comments