Updating Email Auto Answer not working

Hello Team - We are trying to update the queue parameters for the email section and want to update the auto-answer for email to "True", below is the python code, the code runs without an error, but still is not updating the auto-answer for email to true:-

import PureCloudPlatformClientV2
import logging
from PureCloudPlatformClientV2 import Script, QueueRequest
from PureCloudPlatformClientV2.rest import ApiException
from PureCloudPlatformClientV2.apis import routing_api, conversations_api
from PureCloudPlatformClientV2.models import Queue, MediaTranscription , predictor_models
from PureCloudPlatformClientV2.configuration import Configuration
from pprint import pprint
import openpyxl

region = PureCloudPlatformClientV2.PureCloudRegionHosts.us_east_2
PureCloudPlatformClientV2.configuration.host = region.get_api_host()
apiclient = PureCloudPlatformClientV2.api_client.ApiClient().get_client_credentials_token("80bc5d03","T8C_")
authApi = PureCloudPlatformClientV2.AuthorizationApi(apiclient)

Create an instance of the API class

api_instance = PureCloudPlatformClientV2.RoutingApi(apiclient)

Define the queue ID

queue_id = 'b543ed0b'

body = PureCloudPlatformClientV2.QueueRequest()
body.name = "Test_Email"
body.media_settings = PureCloudPlatformClientV2.MediaSettings()
body.media_settings.email = PureCloudPlatformClientV2.EmailMediaPolicy()
body.media_settings.email.enable_auto_answer = True

Create reference to flow

#queue_flow = PureCloudPlatformClientV2.DomainEntityRef()
#queue_flow.id = b04c"
#body.queue_flow = queue_flow

Create reference to prompt

#whisper_prompt = PureCloudPlatformClientV2.DomainEntityRef()
#whisper_prompt.id = "6ce3"
#body.whisper_prompt = whisper_prompt

#Update the Division
#division=PureCloudPlatformClientV2.Division()
#division.id="0a097f0c"
#body.division=division

Create scripts

#script1 = Script()

Set script properties (name, etc.) based on the library

#script1.name = "abcd"
#script1.id="c7bf"

Update queue with default script

#body.default_scripts = {

"CALL": script1 # Assuming "EMAIL" is the communication type for the script

#}

logging.debug("Request body: %s", body.to_dict()) # Log the request body

try:
# Update the queue
api_response = api_instance.put_routing_queue(queue_id, body)
print("Queue updated successfully!")
print(api_response)
except ApiException as e:
print("Exception when calling RoutingApi->put_routing_queue: %s\n" % e)

and here is a snippet of the output:-

Queue updated successfully!
{'acw_settings': {'timeout_ms': None, 'wrapup_prompt': 'OPTIONAL'},
'agent_owned_routing': None,
'auto_answer_only': False,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': 'ed352',
'date_created': datetime.datetime(2023, 10, 26, 15, 15, 6, 114000, tzinfo=tzutc()),
'date_modified': datetime.datetime(2024, 10, 4, 21, 46, 19, 655000, tzinfo=tzutc()),
'default_scripts': {},
'description': None,
'direct_routing': None,
'division': {'id': 'fc0c-02a64f',
'name': 'EFG',
'self_uri': '/api/v2/authorization/divisions/fc0c-02a64f'},
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': 'b543ed0b',
'joined_member_count': 0,
'media_settings': {'call': {'alerting_timeout_seconds': 8,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': {'duration_ms': 20000,
'percentage': 0.8},
'sub_type_settings': None},
'callback': {'alerting_timeout_seconds': 30,
'auto_answer_alert_tone_seconds': None,
'auto_dial_delay_seconds': 300,
'auto_end_delay_seconds': 300,
'enable_auto_answer': None,
'enable_auto_dial_and_end': False,
'manual_answer_alert_tone_seconds': None,
'service_level': {'duration_ms': 20000,
'percentage': 0.8},
'sub_type_settings': None},
'chat': {'alerting_timeout_seconds': 30,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': {'duration_ms': 20000,
'percentage': 0.8},
'sub_type_settings': None},
'email': {'alerting_timeout_seconds': 300,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': {'duration_ms': 86400000,
'percentage': 0.8},
'sub_type_settings': None},
'message': {'alerting_timeout_seconds': 30,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': {'duration_ms': 20000,
'percentage': 0.8},
'sub_type_settings': None}},
'member_count': 0,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': 'b9bc',
'name': 'ACS_Dom_Claim_Email',
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': 'TimestampAndPriority',
'self_uri': '/api/v2/routing/queues/b543',
'skill_evaluation_method': 'ALL',
'suppress_in_queue_call_recording': False,
'user_member_count': 0,
'whisper_prompt': None}

Hello Team - Any update.

Make sure you're using the correct types and properties as defined in the SDK. https://mypurecloud.github.io/platform-client-sdk-python/RoutingApi

Can you kindly elaborate and send me to the right direction, I am still new at this and trying to understand why its not working.

Refer to the documentation for the RoutingApi function you're using. You are using incorrect types and property names that don't exist on the correct types. This results in you making a request that does not contain the data required to use that endpoint, which is why the settings you're setting aren't working.

Thanks Tim for your reply and pointing me the right direction, appreciate your help. I made changes to the code, after revisiting, and now atleast I am able to see the Meaid_setting request for email going in to set auto_answer to True, but is still throwing an error

Create an instance of the API class

api_instance = PureCloudPlatformClientV2.RoutingApi(apiclient)

Define the queue ID

queue_id = '-01b5-'

body = PureCloudPlatformClientV2.QueueRequest()
print("Raw Body",body)
body.name = "Test_Email"

Initialize media settings and email settings

body.media_settings = PureCloudPlatformClientV2.QueueMediaSettings()
print("Raw Body",body.media_settings)
body.media_settings.email = PureCloudPlatformClientV2.MediaSettings()
print("Raw Body",body.media_settings.email)
body.media_settings.email.enable_auto_answer = True
body.media_settings.email.auto_answer_alert_tone_seconds = 1
print("Raw Body",body.media_settings.email.enable_auto_answer)

print("Request body: %s", body) # Log the request body

try:
# Update the queue
api_response = api_instance.put_routing_queue(queue_id, body)
print("Queue updated successfully!")
print(api_response)
except ApiException as e:
print("Exception when calling RoutingApi->put_routing_queue: %s\n" % e)

and Now I am getting a 500 internal error:-

Raw Body {'acw_settings': None,
'agent_owned_routing': None,
'auto_answer_only': None,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': None,
'date_created': None,
'date_modified': None,
'default_scripts': None,
'description': None,
'direct_routing': None,
'division': None,
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': None,
'joined_member_count': None,
'media_settings': None,
'member_count': None,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': None,
'name': None,
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': None,
'self_uri': None,
'skill_evaluation_method': None,
'suppress_in_queue_call_recording': None,
'user_member_count': None,
'whisper_prompt': None}
Raw Body {'call': None, 'callback': None, 'chat': None, 'email': None, 'message': None}
Raw Body {'alerting_timeout_seconds': None,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': None,
'sub_type_settings': None}
Raw Body True
Request body: %s {'acw_settings': None,
'agent_owned_routing': None,
'auto_answer_only': None,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': None,
'date_created': None,
'date_modified': None,
'default_scripts': None,
'description': None,
'direct_routing': None,
'division': None,
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': None,
'joined_member_count': None,
'media_settings': {'call': None,
'callback': None,
'chat': None,
'email': {'alerting_timeout_seconds': None,
'auto_answer_alert_tone_seconds': 1,
'enable_auto_answer': True,
'manual_answer_alert_tone_seconds': None,
'service_level': None,
'sub_type_settings': None},
'message': None},
'member_count': None,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': None,
'name': 'Test_Email',
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': None,
'self_uri': None,
'skill_evaluation_method': None,
'suppress_in_queue_call_recording': None,
'user_member_count': None,
'whisper_prompt': None}
Exception when calling RoutingApi->put_routing_queue: (500)
Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json', 'Content-Length': '228', 'Connection': 'keep-alive', 'Date': 'Mon, 07 Oct 2024 18:26:55 GMT', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'ININ-Correlation-Id': '803129ac-bdb8-4f4b-8671-e454b9780a3d', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 a4edf08fb593b7ca4fee9a64018a186e.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'JFK52-P1', 'X-Amz-Cf-Id': 'TZlUHI-Da2yvkK9SJknblENdMB2Mo2k3fl8KR78o47Kok0IUkObPZQ=='})
HTTP response body: {"message":"The server encountered an unexpected condition which prevented it from fulfilling the request.","code":"internal.server.error","status":500,"contextId":"803129ac-bdb8-4f4b-8671-e454b9780a3d","details":[],"errors":[]}

A 500 error indicates a server-side error. Please open a case with Genesys Cloud Care to investigate further.

Try also to define other parameters in media settings:
body.media_settings.alerting_timeout_seconds = <value>
body.media_settings.manual.answer_alert_tone_seconds = <value>

(from doc https://mypurecloud.github.io/platform-client-sdk-python/MediaSettings)

Regards,
V.P.

Thanks a lot @vpirat for your suggestion, I tried modifying the code, and I have tried both float and integer value (also , please kindly note the documentation has this as optional, and from the API portal it updates without setting these value), but its still throwing 500 Internal error, below is the modified code:-

Create an instance of the API class

api_instance = PureCloudPlatformClientV2.RoutingApi(apiclient)

Define the queue ID

queue_id = 'bd77dcbc'

body = PureCloudPlatformClientV2.QueueRequest()
print("Raw Body",body)
body.name = "TestEmail" #QueueName

Initialize media settings and email settings

body.media_settings = PureCloudPlatformClientV2.QueueMediaSettings()
print("Raw Body",body.media_settings)
body.media_settings.email = PureCloudPlatformClientV2.MediaSettings()
print("Raw Body",body.media_settings.email)
body.media_settings.email.enable_auto_answer = True
body.media_settings.email.auto_answer_alert_tone_seconds = 15.0
body.media_settings.alerting_timeout_seconds = 15
print("Raw Body",body.media_settings.email.enable_auto_answer)

Here is the response:-

Raw Body {'acw_settings': None,
'agent_owned_routing': None,
'auto_answer_only': None,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': None,
'date_created': None,
'date_modified': None,
'default_scripts': None,
'description': None,
'direct_routing': None,
'division': None,
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': None,
'joined_member_count': None,
'media_settings': None,
'member_count': None,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': None,
'name': None,
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': None,
'self_uri': None,
'skill_evaluation_method': None,
'suppress_in_queue_call_recording': None,
'user_member_count': None,
'whisper_prompt': None}
Raw Body {'call': None, 'callback': None, 'chat': None, 'email': None, 'message': None}
Raw Body {'alerting_timeout_seconds': None,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': None,
'sub_type_settings': None}
Raw Body True
Request body: %s {'acw_settings': None,
'agent_owned_routing': None,
'auto_answer_only': None,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': None,
'date_created': None,
'date_modified': None,
'default_scripts': None,
'description': None,
'direct_routing': None,
'division': None,
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': None,
'joined_member_count': None,
'media_settings': {'call': None,
'callback': None,
'chat': None,
'email': {'alerting_timeout_seconds': None,
'auto_answer_alert_tone_seconds': 15.0,
'enable_auto_answer': True,
'manual_answer_alert_tone_seconds': None,
'service_level': None,
'sub_type_settings': None},
'message': None},
'member_count': None,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': None,
'name': 'TestEmail',
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': None,
'self_uri': None,
'skill_evaluation_method': None,
'suppress_in_queue_call_recording': None,
'user_member_count': None,
'whisper_prompt': None}
Exception when calling RoutingApi->put_routing_queue: (500)
Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json', 'Content-Length': '228', 'Connection': 'keep-alive', 'Date': 'Mon, 07 Oct 2024 22:08:36 GMT', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'ININ-Correlation-Id': '74eb8937-41db-4bc0-a422-a04ae468a4a6', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 78a5d96d9c348edf8a3fca2ba77f8e64.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'JFK52-P1', 'X-Amz-Cf-Id': '3FZa-eNZBp2ws4wy2V6JbcodRQ3IN7luzStngtuvls1sqH_cEkOdPg=='})
HTTP response body: {"message":"The server encountered an unexpected condition which prevented it from fulfilling the request.","code":"internal.server.error","status":500,"contextId":"74eb8937-41db-4bc0-a422-a04ae468a4a6","details":[],"errors":[]}

Hi,

Api call fails on alerting_timeout_seconds parameter that cannot be retrieved with a value.
From the doc, it looks like the properties are camel case.

image

See related https://mypurecloud.github.io/platform-client-sdk-python/MediaSettings

Looks like some discrepancies there. See Conflict between key name formatting GET vs POST (camel vs underscore) - #7 by AllanK

So I would advise to retry with the naming from the doc.
Set all properties.

Hope this helps,

Regards,
V.P.

Thanks again @vpirat - I have tried to change the request based upon the other post and you suggestion, and this time in the Raw output, I don't see values being set:-

Request:-

body.media_settings = PureCloudPlatformClientV2.QueueMediaSettings()
print("Raw Body",body.media_settings)
body.media_settings.email = PureCloudPlatformClientV2.MediaSettings()
print("Raw Body",body.media_settings.email)
body.media_settings.email.enableAutoAnswer = True
print("Raw Body",body.media_settings.email.enableAutoAnswer)
body.media_settings.email.autoAnswerAlertToneSeconds = 15.0
print("Raw Body",body.media_settings.email.autoAnswerAlertToneSeconds)
body.media_settings.email.alertingTimeoutSeconds = 15
print("Raw Body",body.media_settings.email.alertingTimeoutSeconds)
body.media_settings.email.serviceLevel = {
"percentage": 0.75,
"durationMs": 20000
}
print("Raw Body",body.media_settings.email.serviceLevel)
body.media_settings.email.subTypeSettings = True
print("Raw Body",body.media_settings.email.subTypeSettings)
body.media_settings.email.manualAnswerAlertToneSeconds = 20
print("Raw Body",body.media_settings.email.manualAnswerAlertToneSeconds)

and here are the logs:-

Raw Body {'acw_settings': None,
'agent_owned_routing': None,
'auto_answer_only': None,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': None,
'date_created': None,
'date_modified': None,
'default_scripts': None,
'description': None,
'direct_routing': None,
'division': None,
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': None,
'joined_member_count': None,
'media_settings': None,
'member_count': None,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': None,
'name': None,
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': None,
'self_uri': None,
'skill_evaluation_method': None,
'suppress_in_queue_call_recording': None,
'user_member_count': None,
'whisper_prompt': None}

Raw Body {'call': None, 'callback': None, 'chat': None, 'email': None, 'message': None}

Raw Body {'alerting_timeout_seconds': None,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': None,
'sub_type_settings': None}
Raw Body True
Raw Body 15.0
Raw Body 15
Raw Body {'percentage': 0.75, 'durationMs': 20000}
Raw Body True
Raw Body 20

Here is the snippet for the final request:-
Request body: %s {'acw_settings': None,
'agent_owned_routing': None,
'auto_answer_only': None,
'bullseye': None,
'calling_party_name': None,
'calling_party_number': None,
'conditional_group_routing': None,
'created_by': None,
'date_created': None,
'date_modified': None,
'default_scripts': None,
'description': None,
'direct_routing': None,
'division': None,
'email_in_queue_flow': None,
'enable_audio_monitoring': None,
'enable_manual_assignment': None,
'enable_transcription': None,
'id': None,
'joined_member_count': None,
'media_settings': {'call': None,
'callback': None,
'chat': None,
'email': {'alerting_timeout_seconds': None,
'auto_answer_alert_tone_seconds': None,
'enable_auto_answer': None,
'manual_answer_alert_tone_seconds': None,
'service_level': None,
'sub_type_settings': None},
'message': None},
'member_count': None,
'member_groups': None,
'message_in_queue_flow': None,
'modified_by': None,
'name': 'TACS_Email',
'on_hold_prompt': None,
'outbound_email_address': None,
'outbound_messaging_addresses': None,
'peer_id': None,
'queue_flow': None,
'routing_rules': None,
'scoring_method': None,
'self_uri': None,
'skill_evaluation_method': None,
'suppress_in_queue_call_recording': None,
'user_member_count': None,
'whisper_prompt': None}

Response:-

Exception when calling RoutingApi->put_routing_queue: (500)
Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json', 'Content-Length': '228', 'Connection': 'keep-alive', 'Date': 'Tue, 08 Oct 2024 13:53:04 GMT', 'Cache-Control': 'no-cache, no-store, must-revalidate', 'ININ-Correlation-Id': '8ea57659-e26c-4fae-a590-6efb0480cc30', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 1461aa0cc0d6d2fb29baf25a00e64194.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'JFK52-P1', 'X-Amz-Cf-Id': '1yMxW8CZsjgE-BLONno6TyABZx0bKSCB7H-7jO9Mb-oycj287-Cg6Q=='})
HTTP response body: {"message":"The server encountered an unexpected condition which prevented it from fulfilling the request.","code":"internal.server.error","status":500,"contextId":"8ea57659-e26c-4fae-a590-6efb0480cc30","details":[],"errors":[]}

Just a heads up, there's a rendering issue with the docs. When you see words in the property names that are in italics, it's because the docs aren't being properly escaped and the underscores are being parsed as markdown. The Python SDK always uses snake case, so alerting_timeout_seconds is correct.

Thanks @tim.smith , I have already raised a Genesys support case and the response was as follows, I have provided them new set of logs, frustrating part is the API request for put doesn’t specify this to be mandatory field, anyways even after setting that up is not working.

And alsi interesting thing to note in the error is, its not referencing the Snake_Case but the camelCase

t:"2024-10-07T22:08:36.646Z",

message:"Error code [internal.server.error] type [NullPointerException] message [Cannot invoke "java.lang.Integer.intValue()" because the return value of "com.inin.pubapi.server.purecloud.contracts.assignment.MediaSettings.getAlertingTimeoutSeconds()" is null] cause type [] cause message []",

The 500 is returned as alertingtimeoutseconds is not being set as expected. alertingtimeoutseconds will be required for making a PUT request to "/api/v2/routing/queues/{queueId}". If you believe this is being sent in the request properly, can you provide us with the console/network logging from the SDK so we can confirm the exact request body?

Thanks for sharing, please continue working with Care to resolve the issue and report bugs with the request contract's definition.

Thanks, that's good to know.

The post which helped me in reaching to the solution was How to add Wrapup code using Python SDK - #4 by charlie.conneely and also the advice which @tim.smith gave of trying the API, when I looked at API request, it was way different then, how Python SDK says it should...

I only wish there are examples as well, in the API section which can showcase how to use the API.

Here is the final piece of the code which worked:-

Create an instance of the API class

api_instance = PureCloudPlatformClientV2.RoutingApi(apiclient)

Define the queue ID

queue_id = 'bd77dcbc'

body = PureCloudPlatformClientV2.QueueRequest()
print("Raw Body",body)
body.name = "Test_Email"

Initialize media settings and email settings

body.media_settings = PureCloudPlatformClientV2.QueueMediaSettings()
print("Raw Body",body.media_settings)
body.media_settings.email = PureCloudPlatformClientV2.MediaSettings()
print("Raw Body",body.media_settings.email)
body.canned_response_libraries = { "mode" :"None"}
body.media_settings.email = {
"enableAutoAnswer": "True",
"alertingTimeoutSeconds": 30,
"serviceLevel": {
"percentage": 0.8,
"durationMs": 86400000
},
"autoAnswerAlertToneSeconds": 10,
}

print("Request body: %s", body) # Log the request body

try:
# Update the queue
api_response = api_instance.put_routing_queue(queue_id, body)
print("Queue updated successfully!")
print(api_response)
except ApiException as e:
print("Exception when calling RoutingApi->put_routing_queue: %s\n" % e)

1 Like

Nice to see you succeeded.

So conclusion could be "documentation is correct but incomplete" ?

Regards,
V.P.

Thanks @vpirat , I would leave it experts like you, @tim.smith and @Declan_ginty to decide on it :slight_smile:

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.