Known Issues - Help Desk MX

This section describes solution for a most frequently errors, which customer can encounter.


I noticed, that there's very frequent actions on the pages, that connects to /helpdesk_ticket/checknotification/ URL, they make CPU load high

It is our background task, which is used to save draft work on tickets, and check for new arrivals - which should be displayed as desktop notifications.

Solution:

You need either to turn then off, or set larger values for task execution. To do this, you need to set these two fields:

  • Help Desk -> Settings -> General Settings -> Tickets autosave period, sec
  • Help Desk -> Settings -> Desktop Notification Settings -> Notifications check period, sec

The first disables drafts autosave, the second - checking for new arrivals. Set them to 0 to disable, or increase values up to 600-900 seconds to reduce checking period using settings above. Normally, we use these features with 10-20 seconds for checking period, but for high-load servers we recommend to use 300-600 seconds - e. q. 5-10 minutes. The precise value can estimated by daily performance analysis of your CPU load..


I noticed very slow access to tickets, and it was not happening before

This issue can appear, if you use database for attachment storage (check it at Help Desk -> Settings -> General Settings -> Store attachments in), and table [YOUR_PREFIX]m_helpdesk_attachment has grown above 1Gb.

Solution:

  • Clean all records in the table m_helpdesk_attachment, which have stored body in database. But it will render all attachments inaccessible;
  • Contact our team for a special script, which will move all your database-stored attachments to the filesystem.


I had set up Gateway, but received "Authentication error" in Last Fetch Result column

This means, that mail server can not authenticate your IMAP (or POP) request. To resolve this issue you need to consult your mail server's recommendations for accessing with mail clients, and ensure, that the following parameters match:

  • If you use IMAP protocol, ports should be 993, 995 (with encryption) or 142 (without)
  • If you use POP protocol, ports should be 995 (with encryption) or 110 (without).
  • If you use TLS encryption, make sure, that your mail server has valid certificate. If you're not sure, use "TLS (w/o validation)" option in Encryption field (Help Desk -> Dictionaries -> Gateways -> [YOUR_GATEWAY]).
  • There also can be non-standard ports, depending on encryption. 467 for SSL and 587 for TLS.

There also can be the following external causes of this issue:

1. You use a two-factor authentication in your mailbox

In this case, you need to create a special password for helpdesk and use it when you configure the gateway. If you use GMail, refer to this tutorial.

2. IMAP is disabled for your mailbox

Please, contact your mailbox provider and ask them to email IMAP.

Note: if your browser uses cache, each time you edit Gateway settings, write down password each time carefully. Cache can restore your older password, and replace current with it, blocking authentication.


I still have an error "enable IMAP extension in PHP configuration of your server", but IMAP is enabled

This issue also can be reported by our Email Fetching module and can be seen at Helpdesk > Dictionaries > Gateways, where error "Can't fetch" appears. There can be the following causes:

1. IMAP is disabled on shell-level

PHP can have two configurations. One for Apache (or other server), second for shell (also called CLI), where php-imap extension should work. Our extension is fetching emails at shell level (via crontasks), so we can use only php shell.

You can confirm this cause by running the following command from shell console: php -m | grep imap. If you see empty result, then imap is not enabled and you need to fix this.

Solution:

  • Contact your hosting provider and ask to enable php-imap for PHP at shell level.

2. Stucked crontask, which blocks fetching process

This cause can be confirmed using third-party freeware extension AoE Scheduler and use its option Timeline view.

Solution:

  • Kill all stucked crontasks (via List View option of Scheduler, for example) and restart cron.

3. Lock file has wrong permissions, or for some reason was not removed during one of previous fetch

This cause can be confirmed by checking file helpdesk.lock at /var/locks directory.

Solution:

  • Increase period for mirasvit_helpdesk crontask via Job Configuration option of Scheduler, or editing file app/code/local/Mirasvit/Helpdesk/etc/config.xml.
  • Remove lock file. It will be re-created by our extension with proper permissions on next fetch;

4. Too large mailbox contents

This cause can be confirmed by checking quantity of emails directly in mailbox. If there's above 1000-2000 messages, then it is the most probably cause.

In fact, it's known issue of IMAP protocol. Our extension fetches collection of all emails, then filters it by Unread flag. If quantity emails is too large, collection is selected longer, than IMAP has timeframe for response, and collection returns empty. Our extension thinks, that there's nothing to fetch, and exits.

Solution:

  • Clean your mailbox from old emails, or
  • Create inside your mailbox a folder. Then, using rules in your mailbox (not in Help Desk), do one of these actions:
    • Create a rule, which will move all Unread emails to that folder. Then go to Help Desk -> Dictionaries -> Gateways, pick up a Gateway, and put to the Folder field name of created mailbox folder;
    • Create a rule, which will move all Read emails to that folder. In this case no additional setup needed, fetch will be restored because selection from general Inbox will be much smaller.


The customer creates a ticket, but my reply is not coming to his mailbox (or notification does not sent)

Our extension uses notifications system to notify customers about updates. Templates for these notifications is set at Help Desk -> Settings -> Email Notification Settings section. If these updates not appear at the customer's account, even when templates are set, there can be the following causes:

1. Notifications are treated as Spam.

Some email providers (Amazon for example) can check email headers for additional attributes, or other criteria, and place them under Spam mark. To confirm this cause just visit your Spam folder in mailbox.

Solution:

  • Add exceptions to the Spam filters for them.

2. Your template contains invalid UTF-8 symbols.

It is common on non-standard platforms, or when for templates edit different platforms are used simultaneously.

Solution:

  • Copy your template code to the editor, that shows non-printable symbols (Notepad++ or Sublime), and correct them. Then re-save your template to resolve.

3. You had activated Sandbox mode

If you set option Help Desk -> Settings -> Developer Settings -> Activate Sandbox to Yes, our extension sends all outgoing emails to mailbox, set in Send All Outgoing emails to Email (located in the same section of Settings). If that field is empty, no notifications are sent at all.

Solution:

  • Turn off Sandbox mode by setting No to the Activate Sandbox option, or
  • Add a mailbox to Send All Outgoing emails to Email.

4. You're using email extension, that for some reason can not send our template.

This is common for Mandrill-based services, that has their own email structure. Typically they create an exception logs with the real error. In this case contact our support team.

5. You're sending reply to a Gateway from the mailbox, which is also a Gateway.

All emails, which come from mailboxes, which were set as a Gateway, are skipped during fetch procedure. It is done to prevent infinity cycling due to "conversation" between two Gateways.


Email replies do not bind to their tickets, and fetched as new tickets.

Our extension uses for proper message binding to tickets special hidden block, which contains its code. If binding does not work, there can be the following causes:

1. Binding variable is missing from email template

This issue can appear, when special variable {{var ticket.getHiddenCodeHtml()}} is missing in email template. Also, it can be caused by some filter or spam protection means of your email provider.

Solution 1

  • Go to Help Desk > Settings > Email Notification Settings and check name of the particular template
  • If custom template selected, go to System -> Transaction Emails and edit that template. Put variable {{var ticket.getHiddenCodeHtml()}} in appropriate place and save.
  • If standard template selected, check templates at app/locale/[YOUR_LOCALE]/template/email/mst_helpdesk/ directory. Restore {{var ticket.getHiddenCodeHtml()}} to appropriate template and save it.
  • Purge ALL your cache.

Solution 2

  • Go to Help Desk > Settings > Email Notification Settings and set Show Ticket ID in the email title option to Yes

2. Email service removes hidden ticket code

This issue can appear, when email service (Office360, for example), which cleans all additional email attributes, is used for either sender or gateway. So the code of ticket is stripped from email and customer answer can not be binded to proper ticket.

Solution:

  • Go to Help Desk -> Settings -> Email Notification Settings and set option Show Ticket ID in the email title to "Yes".


The customer creates a ticket and I get a message in the system. My reply works too, but the customer next reply doesn´t appear in the Backend.

  • Ensure, that third-party email clients do not have access to your mailbox, which is used as Gateway. Our extension fetches only that emails, that have Unread mark. Some email clients (for example, Outlook) mark emails as Read during preview or even during just listing of mailbox contents. If you need to work with your mailbox using email client, please, set in its settings to not mark emails as Read.
  • Ensure, that these replies are not placed to the Spam folder (Help Desk -> Spam). It is possible, if Spam Patterns (Help Desk -> Dictionaries -> Spam Patterns) are too general
  • Check, whether these tickets are actually came to your Help Desk, but did not converted for some reason. All fetched emails "as is" are stored in table [DB_PREFIX]_m_helpdesk_email. Search there for missing emails. If they are here, than it can be a bug of email to ticket conversion. In this case contact our support team.

Note for Apple Mail users: Apple Mail haven't an option to mark emails as unread during fetch or preview. But there's an overwork, that might help - you can either use TruePreview for Apple Email, or set Read Mark delay to 5 minutes (this is the period of our extension fetch).


The customer creates ticket, and then notifications begin to add infinitely, creating a cycle

Our extension appends to notifications special attribute "Auto-submitted". This attribute is RFC-3834-compliant and used to avoid falling to infinite cycle. If for some reason this attribute is not added - then notification triggers automated response, it is fetched by helpdesk and also triggers notification - and therefore, messages fall to infinite cycle.

There can be the following causes:

  • You have option Help Desk -> Settings -> General Settings -> Send blind carbon copy (BCC) of all emails to set to the same mailbox, as one of your Gateways. BCC copy mode strips all email attributes, except it's content - and our special attribute as well. Set this option to empty to resolve issue, or to other mailbox, not connected to Gateways.
  • You have added to Bcc field of particular ticket mail address, that also used as Gateway. Clear this field and re-save ticket to resolve.


The customer creates a ticket, but attachments do not appear neither in staff responses, neither in customer's replies.

Our extension uses default PHP mechanism to upload attachments. But there can be the following external causes:

1. Size of attachments is too large to fit current PHP limits.

This cause appears in most cases. To confirm it, try to upload subsequently smaller files (a few KBytes) up to larger.

Solution:

Increase limits of upload size by increasing value of two variables in PHP.ini (or in .htaccess) - we recommend up to 40M:

  • memory_limit = 40M
  • upload_max_filesize = 40M
  • post_max_size = 40M

Then restart Apache to make new values apply. Typically it can be done via command /etc/init.d/httpd restart or sudo service apache2 restart.

If you use database as storage (or use one of our older versions), you might need to adjust these variables as well, they will increase also time frame for transaction:

  • max_execution_time = 5000
  • max_input_time = 3000

Note: these limits should be changed for both CLI (command-line interface) and server PHP configurations.

2. No free space for storing attachments

Solution:

  • If you use file system as an attachment storage (Help Desk -> Settings -> General Settings -> Store attachments in set to File System), check, that folder /media/helpdesk/attachments has proper permissions. Account, which manages Magento, should have there write permissions;
  • If you use database as an attachment storage, check size of [DB_PREFIX]m_helpdesk_attachment table. If it's too large, then update request (e. q. image uploading) just dropped before database response. Clean up this table (this will also destroy old attachments), or ask our support team to move attachments to the file system.

Note: In some rare cases server can utilize CR+LF correction service. It is commonly applied to all uploaded files, like they are text. This leads to image corruption, so they will be recognized by our extension as non-existent. If such service is installed on your server, place exception there to allow our extension upload files as is.


Tickets are created and messages added, but attachments only displayed, download returns 0 bytes

This error most frequently appears, when customer uses file system as attachment storage, and files either do not saved at all, or can not be retrieved.

Solution:

  • Make sure, that directory /media/helpdesk/attachments has proper permissions and same owner, that runs Magento;
  • Make sure, that there's no service, that filter outcome data stream, and can block download links;

Note: In some rare cases, if you have two Help Desks installed on two different servers, and they have the same Gateways (or share database), attachments can be actually stored on other server. To confirm this issue turn off all Gateways on each of your Help Desks and check for this issue again.


Help Desk keeps asking for the third party email address when sending any emails, even when I have a customer email address selected

This issue can appear after update, when old javascripts for some reasons are not refreshed. Since "Third Party Email" is hidden by Javascript on-the-fly. If for some reason this javascript is not loaded, or conflicting with some other script - field won't be hidden, and customer is required to enter third-party email in every message.

Solution:

  • If you use some kind of scripts merging or caching, turn it off and go to System -> Cache Management and use button Flush Javascript/CSS Cache for Javascript refresh. This is the most frequent cause;
  • If this will not help, check for Javascript errors in Console (using Firebug for Firefox, or similar tool for Chrome), and it can reveal the source of conflict (most typically it is a jQuery conflict - refer to I have two jQuery libs on the page issue below).


Agent's signature is set, but not displayed in notification emails to customer

This issue can appear, when special variable {{var user.getSignature()}} is missed from template.

Solution:

  • Go to Help Desk > Settings > Email Notification Settings and check names in Template of New Ticket Email for Customer or/and Template of New Message Email for Customer
  • If custom template selected, go to System -> Transaction Emails and edit that template. Put variable {{var user.getSignature()}} in appropriate place and save.
  • If standard template selected, check app/locale/[YOUR_LOCALE]/template/email/mst_helpdesk/notification_new_message_template.html or app/locale/[YOUR_LOCALE]/template/email/mst_helpdesk/notification_new_ticket_template.html. Put back {{var user.getSignature()}} in template and save it.
  • Purge ALL your cache.


I had set Feedback Tab button options (color, font, etc) in Settings, but the button does not change

This issue can appear, if you're using Javascript/CSS caching or minifying using some third-party extension, which has its own caching:

Solution:

  • Go back to Help Desk -> Settings -> Feedback Tab and make sure, that all parameters are set;
  • Go to System -> Cache Management and use button Flush Javascript/CSS Cache to purge cache explicitly;
  • If you use minifying third-party extension, go to its settings and repeat minifying.


I had set Quick Responses, but they do not displayed on some tickets

Our Quick Responses (Help Desk -> Dictionaries -> Quick Responses) have a store-dependency field, which restrict them to particular store.

Open ticket, where Quick Responses are not displayed, and check Additional tab. There will be shown store name. Then return to Quick Responses Grid and add this store to the field Store of all quick responses, that should be displayed.


Quick Responses contain weird javascript code

Example:

/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */, OKD-384-58649, ExampleCompany, ExampleCompany, Administrator, admin@mycompany.com
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */

This script is used by CloudFlare Email Protection, cloud service, which masks 'on-the-fly' email addresses by placing special script after them.

Solution:

  • Turn off CloudFlare Email Protection service, or
  • Go to Help Desk > Dictionaries > Quick Responses and adjust Quick Responses content, so they not contain open email addresses or variables, which can be translated to them.


I have two jQuery libs on the page, and it's causing unchecked Javascript errors

If your store uses own jQuery, you may need to disable jQuery used by Helpdesk.

Solution:

Remove the line

     <action method="addJs"><script>mirasvit/core/jquery.min.js</script></action>

from the following files:

  • /app/design/adminhtml/default/default/layout/mst_helpdesk.xml
  • /app/design/frontend/base/default/layout/mst_helpdesk.xml

and Purge ALL your cache, especially Javascript/CSS cache, if you have scripts combined or minified.

Help Desk MX