General Technical Discussions for Service

Get Involved. Join the Conversation.

Comments

  • Bastiaan van der Kooij

    hey Anurag,

    +1 for a great Question with code attached

    Just tested it and that seems to be a bug (did you submit a ticket?). As a workaround you might add a second rule after you call the Add-In to check on the result of your Add-In logic;

    So you would have two WorkspaceRules (example on button click)

    1. IF Button1 click, THEN Execute Add-In Control action
    2. IF Button1 click, BUT ONLY if Add-In Control condition"Result" returns value equals 1, THEN perform you follow up logic


    Then in your Add-In you can perform your logic, set a result variable and have that returned in the second rule;

            string Result;
            public void RuleActionInvoked(string ActionName)
            {
                System.Threading.Thread.Sleep(5000);
                if (AllWasExecutedWell)
                    Result = "1";
            }
            public string RuleConditionInvoked(string ConditionName)
            {
                return Result;
            }

     

    Edit: Just saw Scott's comment on the other post, might be Scott that you use a newer version where it is fixed? I used Nov16 and had the same issue

    Bastiaan

  • Anurag Mittal

    You can get a list of all custom fields by using GetOptlist function. Then loop over it to get ID of specific custom field by label and use that ID to set field value. See below code snippet

                IList<IOptlistItem> CustomFieldOptList = _globalContext.GetOptlist(92);//92 returns an OptList of custom fields in a hierarchy
                foreach (IOptlistItem CustomField in CustomFieldOptList)
                {
                    if (CustomField.Label == "POC Text")//Custom Field Name
                    {
                        MessageBox.Show(CustomField.ID.ToString());//Get Custom Field ID
                    }
                }

  • Edson Junior

    Here goes an exemple:


                    ORACLE_SERVICE_CLOUD.extension_loader.load('Incindet_Lookup_Extension','1')
                    .then(function(extensionProvider)
                        {
                        extensionProvider.getGlobalContext().then(function(globalContext)
                            {
                                _urlrest = globalContext.getInterfaceServiceUrl("REST");

                                globalContext.getSessionToken().then(
                                   function(sessionToken){
                                    sessionID = sessionToken;
                                    console.log("URL: " + _urlrest);                                
                                    console.log("Session: " + sessionID);

                                    MyInboxReportAPI(_urlrest, sessionID);

                                   });
                            }
                        );
                        }
                    );                

                    
                }

                function MyInboxReportAPI(restUrl, sessionID)
                {
                    var xhr = new XMLHttpRequest();
                    var param = '{"id": 100752}';    
                    
                    xhr.open("post", restUrl + "/connect/v1.3/analyticsReportResults");
                    xhr.setRequestHeader("Authorization", "Session " + sessionID);
                    xhr.onload = function() {
                        var obj = JSON.parse(xhr.responseText);                                        
                        MyInboxPanel(obj);
                    }
                    xhr.send(param);
                }

  • Robert Surujbhan

    Monica, 
    Your code reference to the custom widget is wrong.  First, you should create a sub-directory in /cp/customer/development/widgets/custom for your widgets to be (for example, "/mywidgetsfolder").  Your specific widget directory will then go into this directory ("/mywidgetfolder/ChatLaunchButton_V2").  Then, your code reference in the chat_launch page code would become:

    <rn:widget path="custom/mywidgetsfolder/ChatLaunchButton_V2" />
    

    Have you considered using the Customer Portal widget builder available in the CP Administration area? If not, I would recommend it here - it's a good way to start the process of extending an existing widget or building a new one from scratch. It will automatically create the right widget files and directories for you based on an interactive wizard. The wizard can activate your new custom widgets too (otherwise, you will need to activate your widget manually in CP Admin before it can be used on a page).

  • Corbin Midgley

    You need .NET Framework 4.6.2. Oracle is not proactively telling customers this, but it is a known issue that we were told about through a service request.

     

  • Dietrik

    Hi,

    There is a setting in your user options to play a sound on an incoming chat.

    Check your communication center settings in the user options screen.

    Regards

     

    link added

    http://documentation.custhelp.com/euf/assets/docs/november2016/olh/index.html#Chat/topicrefs/t_Change_your_chat_options_aa1130240.html

  • Bastiaan van der Kooij

    Hey Brandon,

    we have a custom solution for this which allows you to do this. Contact me via PM if you're interested.

    Bastiaan
    CX Builders

  • Anurag Mittal

    Prasad,

    Custom fields are not available in the $obj object if it wasn't edited during the save/update that caused the custom process event to be fired. In your case CustomFields->c->alternateemail doesn't get modified when TechMail update your incident that's why $obj returns Null value.

    You have to use ROQL to fetch value of this custom fields. Look at this post for more understanding.

    ~Anurag

  • Edson Junior

    Hi,

    I would recommend talking to your sales rep or CSM to get the right answer for your case. There would be different answers depending on your commercial agreement with Oracle. More information and detailed information on API is available in Oracle Customer Service and Support Cloud Services Descriptions and Metrics.

    Please, go ahead and find your Sales Rep / CSM assigned to your account for better assistance at this point.

    Thanks

  • Bastiaan van der Kooij

    That is all just nicely documented in the Developer Guide for BUI

     

  • Huda Harun

    Hi Janeth,

    I am the former lead developer of the partner who has build the integration seen on the video.In the past  I did some research for this and there is A LOT of risk involved when you want to achieve this, I was not a big supporter for this back then.

    Please do note that the API's that Edson Junior pointed out for you won't work (properly) any anymore and you WILL BE blocked by WhatsApp within 2 days or so. Also what Luuk posted and I quote "basiccaly duct tape together" is correct as well.

    There are some ways other ways to achieve this but I am not a supporter for these kind of solutions. The only legal solution will be is that Whatsapp provides an official API.

    If you want to play around with integrating apps, you can start of with Line or Telegram.

    Good luck!

    Best,

    Huda

  • Barrilito van Dijk

    Hi Hanna,

    No this is not possible. The syndicate widgets are widgets to be placed on an external site which can only be controlled by some parameters because the code does not run on the external site. Therefor it can only run in an external window.

    For your info, your question has been discussed here many times, especially the part about the url being exposed to the viewer. In many of the discussions it ends up with the same outcome: we all agree it does not look nice to have one url from a site and then another for the chat page, but is it a problem? Under the hood in an iframe for example you can also see the url, and calling a modal screen does not hide it either, under the hood everything can be seen, but agree it would look more fancy if the url was not visible.

    So, unfortunately it is not possible. Perhaps check the idea lab if you can drop the idea there (if it is not already there), so that perhaps this can be done differently in a feature release.

    Regards

  • Pramod Vasudeva Murthy

    From the looks of your post is more interview friendly than of anything elsewink

    There are 4 main technical parts of OSvC:

    • Custom portal - link
    • Add-ins - link
    • SOAP Web Services - link
    • REST Web Services - link

    This is the common link.

    ~VIP

  • Sebastiaan Draaisma

    Hi Sindhuja

    If the application is in the cloud than you could use a browser control in your workspace and have a custom page/search function there to lets say Hybris where you pass the email address or custom field set by rules as variables in your URL.
    If the searchable data has to be inside OSvC than your challenge would be to pupulate a custom field (custom_data) with the data you want and use that field as your search field in a report. For ex. If custom_data equals abc.

  • Edson Junior

    Hi Kumari,

    Here is a SOAP Request using update operation. However, the same idea should works for you. Look at the status field and try your self first an update to understand what is expected in the body.

    Hope this helps

    Thank you, Edson

    ---------

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header>
            <ns7:ClientInfoHeader xmlns:ns7="urn:messages.ws.rightnow.com/v1_3" soapenv:mustUnderstand="0">
                <ns7:AppID>Basic Update</ns7:AppID>
            </ns7:ClientInfoHeader>
            <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" mustUnderstand="1">
                <wsse:UsernameToken>
                    <wsse:Username>xxxx</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxx</wsse:Password>
                </wsse:UsernameToken>
            </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <ns7:Update xmlns:ns7="urn:messages.ws.rightnow.com/v1_3">
                <ns7:RNObjects xmlns:ns4="urn:objects.ws.rightnow.com/v1_3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns4:Asset">
                    <ID xmlns="urn:base.ws.rightnow.com/v1_3" id="1" />
                    <ns4:Name>Oracle</ns4:Name>
                 <ns4:StatusWithType>
                        <ns4:Status>
                            <Name xmlns="urn:base.ws.rightnow.com/v1_3">Unregistered</Name>
                        </ns4:Status>
                    </ns4:StatusWithType>
                </ns7:RNObjects>
                <ns7:ProcessingOptions>
                    <ns7:SuppressExternalEvents>false</ns7:SuppressExternalEvents>
                    <ns7:SuppressRules>false</ns7:SuppressRules>
                </ns7:ProcessingOptions>
            </ns7:Update>
        </soapenv:Body>
    </soapenv:Envelope>