Comments

  • Bishnu Paudel

    Hi Luuk,

    Thanks for you response. I have checked that answer already but couldn't find a way to achieve the config. What I need to be able to do is create a mapping of between the keyword and the exclusion word.

    For example . 'CARER' related to 'VETERINARY CARER' so that when a search for 'CARER' is performed 'VETERINARY CARER' shouldn't be in the result but if a search is performed on 'VETERINARY', it should return the result as normal. I can't add VETERINARY to stop word list. Stop word would just ignore the word from all searches performed.

     

    Thanks,

  • Bishnu Paudel

    Hi Scott,

    Thanks for your response. When I extended it from KeywordSearch widget, it doesn't show 'Ajax end point' attribute at all. Other inherited attributes are shown as 'this attribute is inherited'. I believed it would be added as new attribute since I selected yes for 'Will it be doing any of its own AJAX handling?'

    As a workaround I manually added a new attribute with name default_ajax_endpoint with type 'Ajax End Point' and it worked as expected. Still not sure why this attribute was not added automatically.

     

    Cheers,

  • Bishnu Paudel

    Hi Pramod,

    Thank for your response. It was me passing account id instead of session id. Once I change the parameter to session id all worked as expected.

    Cheers,

    Bishnu

  • Bishnu Paudel

    Hi Barrilito,

    I just realised that I can open the files from 'attachments' tab but the file is empty. 

    One thing I didn't mention in my original post is that it is happening in test site which obviously doesn't copy file content from production.

    Just to clarify with the usage of the function getAdminURL(), it requires you will to be logged in as an agent to use this function; I think that's why it is name getAdminURL. Once the URL is generated, it can be used externally and publicly.

    Thanks,

    Bishnu

  • Bishnu Paudel

    Quick fix: Bypass SSL validation. curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,0); Please refer to this article for detail http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html

    Update: Content of the referenced article:

    When opening a secure url with Curl you may get the following error:

    SSL certificate problem, verify that the CA cert is OK

    I will explain why the error and what you should do about it.

    The easiest way of getting rid of the error would be adding the following two lines to your script . This solution poses a security risk tho.

    
    //WARNING: this would prevent curl from detecting a 'man in the middle' attack
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    
    

    p.. Let see what this two parameters do. Quoting the manual.

    CURLOPT_SSL_VERIFYHOST: 1 to check the existence of a common name in the SSL peer certificate. 2 to check the existence of a common name and also verify that it matches the hostname provided.
    CURLOPT_SSL_VERIFYPEER: FALSE to stop CURL from verifying the peer's certificate. Alternate certificates to verify against can be specified with the CURLOPT_CAINFO option or a certificate directory can be specified with the CURLOPT_CAPATH option. CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2).

    Setting CURLOPT_SSL_VERIFYHOST to 2 (This is the default value) will garantee that the certificate being presented to you have a ‘common name’ matching the URN you are using to access the remote resource. This is a healthy check but it doesn’t guarantee your program is not being decieved.

    Enter the ‘man in the middle’

    Your program could be misleaded into talking to another server instead. This can be achieved through several mechanisms, like dns or arp poisoning ( This is a story for another day). The intruder can also self-sign a certificate with the same ‘comon name’ your program is expecting. The communication would still be encrypted but you would be giving away your secrets to an impostor. This kind of attack is called ‘man in the middle’

    Defeating the ‘man in the middle’

    Well, we need to to verify the certificate being presented to us is good for real. We do this by comparing it against a certificate we reasonable* trust.

    If the remote resource is protected by a certificate issued by one of the main CA’s like Verisign, GeoTrust et al, you can safely compare against Mozilla’s CA certificate bundle which you can get from http://curl.haxx.se/docs/caextract.html

    Save the file cacert.pem somewhere in your server and set the following options in your script.

     
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
    curl_setopt ($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
    
    

    p.. If you are connecting to a resource protected by a self-signed certificate, all you need to do is obtain a copy of the certificate in PEM format and append it to the cacert.pem of the above paragraph.

    By now you should be pretty safe from the man in the middle. But there is still a weak point here, there is nothing that says the trust chain can’t been subverted. In fact it have happened before : http://news.cnet.com/2100-1001-254586.html

  • Bishnu Paudel
    Hi, Would you mind sharing how you resolved the issue? Thanks Thanks
  • Bishnu Paudel

    hi Walter,

    Can you please share what the error looks like? I can look further if you could explain when exactly the error occurs and what is the error message.

    I just found an issue with your code. you are creating new object opp_invented in setup() of TestHarness but passing con_invented from fetch() function. $con_invented will be null in this case.

      public static function setup()
            {
            
            // For this test, create a new
                // opportunity and incident as expected.
                $opp = new RNCPHP\Opportunity;
                $opp->Name = "PruebaPHP";
                static::$opp_invented = $opp;
                return;

            }

            public static function fetchObject( $action, $object_type )
            {

                // Return the object that we
                // want to test with.
                // You could also return an array of objects
                // to test more than one variation of an object.
                return static::$con_invented;
            }

    Also, to catch cURL error, add these lines below curl_exec()

    if(FALSE === $curl_response )
                throw new Exception(curl_error($curl),curl_errno($curl));

  • Bishnu Paudel

    Hi Walter,

    Is your CPM synchronous? It needs to be asynchronous for cURL to work. https://cx.rightnow.com/app/answers/detail/a_id/6840/kw/curl%20in%20cpm 

    Thanks,

  • Bishnu Paudel

    Hi Pramod,

    Do you get that error on every upload attempt? Have you tried uploading only a few records? 

    You mentioned that you have CPMs attached to Contact and Incident create events. Try changing them to asynchronous if they are not already asynchronous.

    I had a situation where synchronous CPM failed to execute because too many incidents were created at the same time.

     

    Thanks,

     

  • Bishnu Paudel

    Hi Dietrik,

    Sorry I had a typo. I have updated my question.

    Thanks,

  • Bishnu Paudel

    Thanks Pramod and Vlad,

    Can incident id be passed the run time from contact workspace? 

    In Vlad's suggestion, there is no incident id in the filter but when I added the report in the workspace, the report doesn't show anything. 

    Thanks,

  • Bishnu Paudel

    Hi Pramod,

    I think CI_HOURS setting defines how many hours an incident with status ‘Waiting’ remains open until it closes automatically. And we have set it to 0 which doesn’t apply to us. So, our incidents can be in any status for any given time.

    We are actually trying to decrease the size of our database and found that incident performance table is taking about 23% of it. We haven’t yet decided about archiving or purging incidents. We were thinking we could get rid of incident performance table data of incidents which are solved. We don’t want to purge incident performance data for any unresolved incidents.

    Thanks,

  • Bishnu Paudel

    Hi Suresh,

    Thanks for your response. Report 120 cannot be modified. I can create a copy of it and add new filter on reference number. How do I attach my new report to task workspace?

    Thanks,

  • Bishnu Paudel

    Hi Pramod,

    We were thinking of deleting the incident performance table data only at this stage. Just not sure if it is possible to retain the data for any unresolved incidents.

    Thanks,
    Bishnu

  • Bishnu Paudel

    Thanks Keri and Pramod for your responses. 

    The issue is in RightNow incident body (customer entry) itself before sending the response to any mail client. Interestingly, if I copy and paste the original message (raw_message.mht) in my outlook and send it to RightNow mailbox, the CSS is retained in the incident body.

    The issue is with a particular sender (a PL/SQL procedure which constructs and send email on the fly) only. Emails from other senders are converting to incidents without any issues with styling.

    Thanks,