Hi there! We are developing an application and want to add a custom channel provider. We follow this guide, however, it does not cover how to bind custom channel provider with channel registration logic (I mean on ChatSettings page when we click on custom channel provider value on adding new channels) - is there any documentation on implementing it?

 

Thanks

Like 1

Like

0 comments
Show all comments

Hi there! We are developing an application and want to add a custom channel provider. We follow this guide and stuck on 7. Implement message sending step. 

 

The question in the send messages logic though Creatio interface. 

Let's assume we already have an active chat with some contact and messages from the contact. If we send (outcoming) message to the chat, we will only see a modal window with "Error while sending the message" message.

We checked the request made when sending the message. The request URL is .../0/rest/OmnichannelOutcomeMessagingService/SendMessage, and the payload:

{
  "message": {
    "Attachments": null,
    "ChannelId": "e79043bc-377d-46b9-86ee-9b0fc4845f0b",
    "ChatId": "f2374931-2402-411a-bf37-0eb2a6acd422",
    "ContactIdentification": null,
    "Id": "00000000-0000-0000-0000-000000000000",
    "IsEcho": false,
    "IsGuestUser": false,
    "IsStandBy": false,
    "Message": "test",
    "MessageDirection": 2,
    "MessageType": 0,
    "Recipient": "Test User",
    "Sender": "123",
    "Source": 2,
    "Timestamp": 0
  }
}

 

We also have an IOutcomeMessageWorker interface implementation binded with our "Test" channel (which has Source set to "123" as you can notice from the payload).

We tried to call the OmnichannelMessagingService.InternalSend method with the same MessagingMessage and saw the following stack trace:

The server encountered an error processing the request. The exception message is 'Error creating an instance
			of the "OmnichannelProviders.MessageWorkers.IOutcomeMessageWorker" class'. See server logs for more details.
			The exception stack trace is: 
		    at Terrasoft.Core.Factories.ClassFactory.GetInstance[T](Func`1 action)
			at OmnichannelMessaging.MessageWorkerFactory`1.GetWorkerInstance(String messengerName)
			at OmnichannelMessaging.MessageOutcomeWorker.InternalSend(UnifiedMessage message, String messenger)
			at Terrasoft.Configuration.Omnichannel.Messaging.OmnichannelMessagingService.InternalSend(MessagingMessage
			messagingMessage)
			at Terrasoft.Configuration.Omnichannel.Messaging.CusboOmnichannelMessagingService.test()
			at Terrasoft.Configuration.CusboMessageEventsHandlerWebServiceNamespace.CusboEventHandlerWebService.test()
			at SyncInvoketest(Object , Object[] , Object[] )
			at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]&
			outputs)
			at Terrasoft.Web.Common.ServiceModel.ThreadContextInitializer.Invoke(Object instance, Object[] inputs,
			Object[]& outputs)
			at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
			at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
			at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
			at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

 

If we add MessagingMessage.Channel = "Test", the message is sent successfully. So we wonder if we are missing something in our configuration and how to send the message to the custom channel provider. Or if there is a way to call custom logic (endpoint, service, anything) when sending messages to custom channel provider.

 

Thanks in advance.

 

Like 0

Like

1 comments

As far as we see, there is a problem in the existing method OmnichannelOutcomeMessagingService.SendMessage - when the message is sent from omni chat conversation component, the request body does not contain ChannelName property (if we trigger this endpoint with this value set, everything works).



The workaround we have done: added Harmony library to the app and used patching with the following code in our custom class that extend AppEventListenerBase (in the end of the OnAppStart method): 

var original = typeof(OmnichannelOutcomeMessagingService).GetMethod("SendMessage");
var prefix = typeof(SendMessagePatcher).GetMethod("Prefix");
var harmony = new Harmony("com.example.test");
harmony.Patch(original, prefix: new HarmonyMethod(prefix));

(SendMessagePatcher should be implemented separately, with adding ChannelName in case the message was sent into custom channel provider chat).



If you have any other suggestions of implementing message sending for custom channel provider, please let us know.

If Creatio Developers consider that there is a bug, we hope it would be fixed asap, otherwise we hope that the documentation would be updated as it is either outdated or not covering adding custom channel provider case completely (especially sending messages topic).

 

Show all comments
Question

after successfully  logining  in i get http://localhost/D7_8.0.9.3748/0/Shell 302 status code

the problem in  Version 8.0.9.1582 only  this happend when i firstlly install this version

Like 0

Like

1 comments

Good day,

 

Most likely you have more than one application for one application pool and use only /0 as an alias in your IIS settings.

Make sure that it looks something like the following:

Please make sure that you have set up your application by following the article:

https://academy.creatio.com/docs/user/on_site_deployment/general_deploy…

 

Thank you.

Show all comments

Hello,

I need to alter the file upload so that certain attachments are saved to an external system rather than the Creatio database. I need to know the schema and methods that handle the upload and download of files in the freedom UI so that I can modify it as needed.

Any help is appreciated. Thank you!

Allen

Like 0

Like

2 comments

Hello,

 

You can set up an S3 integration to complete your task.

More information is available here: https://academy.creatio.com/docs/user/setup_and_administration/base_int…

 

Best regards,

Yuliya

In our case the need is to implement an integration with a third party document storage solution which has its own API.

 

Is it recommended to use the Creatio File API(reference below) for such a use case? . And if so, how do I configure Creatio to make it  use the custom developed File API instead of the out of the box attachment functionality?

 

https://academy.creatio.com/docs/developer/back_end_development/api_for…

 

Show all comments

Hi,



Is there a possibility in Freedom UI to have number comparisons directly in the same dashboard metric tile with increasing/decreasing indicators & colors ?



Dummy example here below with YoY indicators (+ with color coding):



Like 0

Like

3 comments

Hello,

 

Unfortunately, it is not possible to do it by means of basic functionality.

We have registered an idea and forwarded it to our R&D team for further review.

 

Best regards,

Yuliya

@Damien, 

 

I had asked this question last year as Creatio has been using visuals of this functionality in their marketing since at least Q2 last year.

 

I was told we would start to see this in 8.0.6 but my guess would be, according to the latest roadmap I have seen, is that this will be 8.1 -8.2 releases. 



I feel the analytics OOTB functionality is lagging drastically behind other platforms. I am very much also hoping there is some OOTB reporting functionality that is going to be added as users really struggle with the UI from the excel add-on. 

 

I should add that I am impressed by the latest features, so I am sure we will get there eventually.



 

Harry,

 

thanks for you additional comments and very informative screenshot :)



Indeed, analytics & forecast is far behind what competitors (major and smaller) are capable of doing on the market. (Eg: simple changing numbers appeareance from 300,000.00 to 300K or 0.3M; adding a currency $ or CHF, or USD directly on the graph etc, have been around for more than a decade, and are not enhanced missing functionalities such filtering lists based on charts selection vs just a field or lookup (without bringing to a new list page), adding a fixed "objective" line, or the one mentioned here above -- ). Feels more like OOTB analytics is playing a rather slow and late catchup...



From the detailed roadmap, wondering what will actually be available as "official release" on planned quarters vs beta releases😉.

 

Also impressed with the potential of the new crt packages. Hopefully, a steady rythm of new functionality releases will pick up the pace again after 8.1 release "brings out of beta" Freedom UI and composability.

Show all comments

Hi Everyone,

 

We have 2 different types of rates for Customers. One is when the Order date is within Weekdays (Monday-Friday) and the other is for Weekends (Sat-Sun). We have an Order date/time field in our orders. Now is it possible to write a formula that finds out that using that date/time field to determine if the day is Weekday, then it uses the Weekday rate in the business process otherwise it uses the weekend rate?

 

I am looking into DayOfWeek() function but am unsure how to use it in the process. Also, this page is created in Freedom UI if that makes any difference. Thanks in advance!

Like 1

Like

4 comments

Bump!

Any help with writing this Formula? I need to write a formula that differentiates my Order Pickup time (Date/Time field) from Weekdays and weekends

Hi Hassan, 



You need to use the DayOfWeek property of the DayTime class in the formula. 

 

Create a new boolean parameter called IsWeekday 

Create a new formula element in your business process and populate it with the following : 



"YourDateTimeField".DayOfWeek > 0 && <=5 

 

Then, based on the value of your IsWeekday parameter you can proceed with calculating the rate for the order. 

 

Best regards,

Yuri.

Yurii Sokil,

Thank you, Understood

 

Show all comments

Hi Everyone,

 

Is it possible to refresh of a page (Freedom UI Page) through the business process? Currently, we have multiple business processes running in our Freedom UI Order page and the client has to do a manual refresh every time. So I was wondering if it's possible to automate it as well through the process? I know that it is possible in Classic UI and I have seen the Marketplace app for it as well but that doesn't work in Freedom UI. So any ideas?

Like 2

Like

3 comments
Best reply

To do this in a Freedom UI page, this article shows how to receive the server message:

https://customerfx.com/article/receiving-server-side-messages-in-a-creatio-freedom-ui-page/

 

Once the message is received, you can refresh the page using the code outlined in this article:

https://customerfx.com/article/refreshing-reloading-page-or-list-data-on-a-creatio-freedom-ui-page/

 

Also, for Freedom UI, there is a new option where you can set an entity to always automatically refresh the page when it’s updated in a process, as an alternative approach to the above. See https://customerfx.com/article/automatically-refreshing-a-creatio-freedom-ui-page-or-list-after-updating-a-record-in-a-process/

 

Ryan

+1 for Freedom UI

To do this in a Freedom UI page, this article shows how to receive the server message:

https://customerfx.com/article/receiving-server-side-messages-in-a-creatio-freedom-ui-page/

 

Once the message is received, you can refresh the page using the code outlined in this article:

https://customerfx.com/article/refreshing-reloading-page-or-list-data-on-a-creatio-freedom-ui-page/

 

Also, for Freedom UI, there is a new option where you can set an entity to always automatically refresh the page when it’s updated in a process, as an alternative approach to the above. See https://customerfx.com/article/automatically-refreshing-a-creatio-freedom-ui-page-or-list-after-updating-a-record-in-a-process/

 

Ryan

Thanks Ryan, you rock as always

Show all comments

Hi there! We are developing an application and want to add a custom channel provider. We follow this guide, and stuck on 4. Implement the conversion of an incoming message step. 

 

After adding completely the same converted class and publishing it, we receive 

The type or namespace name 'OmnichannelProviders' could not be found (are you missing a using directive or an assembly reference?) compilation result. 

 

As the guide suggests, this class should be added to Custom package and it is working ok in this case, however we need to add it to our application's package so it can be exported and installed. Is it possible? 

Like 0

Like

2 comments
Best reply

Hello,

 

Have I understood everything correctly and you develop this functionality in an assembly-package? If you uncheck this package option "Compile into a separate assembly" do you have the same error message?

 

Thank you!

Hello,

 

Have I understood everything correctly and you develop this functionality in an assembly-package? If you uncheck this package option "Compile into a separate assembly" do you have the same error message?

 

Thank you!

Oleg Drobina,

Correct, we have this option enabled by default and haven't changed it.

After unchecking this checkbox everything works like a charm. 



Thank you very much! 

Show all comments

Hi,

 

In the classic UI, it was possible to display the image fields on list pages (like for Products). As I am experiencing in the Freedom UI, if I add an image field to the list, the image doesn't display.

 

Is it possible to display images in a list in Freedom UI?

Like 1

Like

1 comments

Hello,

 

Unfortunately, there is no option to display the image fields on list pages in Freedom UI. 

We have registered an idea and forwarded it to our R&D team for further review.

 

Best regards,

Yuliya Gritsenko

Show all comments

Hi Community,

 

Is there a way to get the id of the attachment that has been generated through Process file in a business process as illustrated in file attached?

 

The idea is to read the id of this generated report to apply custom access rights.

 

 

Thank you for your help,

Like 0

Like

1 comments

I do wish it would return the ID, however, since it *can* create multiple files for whatever matches the filter conditions it's not always a single ID or file created.

What I typically do is do a read immediately after for attachments on the record, sorted by Created On desc, and also use the Name of the file based on the naming of the printable used. It's not ideal but has worked for me.

Ryan

Show all comments