Example question that a user would submit is "what is the wi-fi password"

The rule should add a responce(answer the question that we defined) to the resolution field and email to the user with the updated ticket information.

Answer Summary:
0 Comments   [ + ] Show Comments


Please log in to comment

Community Chosen Answer


Hmm. Would the user be choosing from a set of pre-defined questions? If not, then you'll need some pretty complicated logic to perform natural language processing on their question. Also, will this be in a custom service desk queue or would the rules be in place for your main service desk?

If you are making a custom service desk then it might be easier to make a drop down in either  a custom field or just use the category field. This would ensure that the question is always asked exactly as you want. I have some rules that incorporate referencing assets that could be adapted to something like this and I'd be happy to share them.

If this isn't a custom service desk then I would be wary of creating rules that automatically close tickets unless you can be certain that the rule only matches specific tickets.

Answered 02/08/2013 by: chucksteel
Red Belt

Please log in to comment



Here is my solution. This will search the title of a ticket and send response back as an email.


                        HD_STATUS.NAME AS STATUS_NAME,
                        HD_STATUS.ORDINAL as STATUS_ORDINAL,
                        HD_IMPACT.ORDINAL as IMPACT_ORDINAL,
                        HD_CATEGORY.ORDINAL as CATEGORY_ORDINAL,
                        HD_PRIORITY.ORDINAL as PRIORITY_NUMBER,
                        HD_TICKET.ID AS TICKNUM,
                        if((datediff(DUE_DATE, now()) = 0), 2, if((datediff(DUE_DATE, now())<0), 1, 3)) as SORT_OVERDUE_STATUS,
                        if(unix_timestamp(TIME_OPENED) > 0, TIME_OPENED, 1<<62) as SORT_TIME_OPENED,
                        if(unix_timestamp(TIME_STALLED) > 0, TIME_STALLED, 1<<62) as SORT_TIME_STALLED,
                        if(unix_timestamp(TIME_CLOSED) > 0, TIME_CLOSED, 1<<62) as SORT_TIME_CLOSED,
                        if(unix_timestamp(ESCALATED) > 0, ESCALATED, 1<<62) as SORT_ESCALATED,
                        if(unix_timestamp(HD_TICKET.CREATED) > 0, HD_TICKET.CREATED, 1<<62) as SORT_TIME_CREATED,
                        if(unix_timestamp(HD_TICKET.MODIFIED) > 0, HD_TICKET.MODIFIED, 1<<62) as SORT_MODIFIED,
                        if(unix_timestamp(HD_TICKET.DUE_DATE) > 0, HD_TICKET.DUE_DATE, 1<<62) as SORT_DUE_DATE,
                        case upper(STATE)
                        when 'CLOSED' then unix_timestamp(HD_TICKET.TIME_CLOSED) - unix_timestamp(HD_TICKET.TIME_OPENED)
                        when 'OPENED' then unix_timestamp(NOW()) - unix_timestamp(HD_TICKET.TIME_OPENED)
                        else unix_timestamp(NOW()) - unix_timestamp(HD_TICKET.CREATED) end as AGE,
                        if ((LENGTH(U1.FULL_NAME) = 0), U1.USER_NAME, U1.FULL_NAME) as OWNER_NAME,
                        U1.FULL_NAME as OWNER_FULLNAME,
                        U1.EMAIL as OWNER_EMAIL,
                        if (U1.ID is null, 'z', concat('a', if ((LENGTH(U1.FULL_NAME) = 0), U1.USER_NAME, U1.FULL_NAME))) as SORT_OWNER_NAME,
                        if ((LENGTH(U2.FULL_NAME) = 0), U2.USER_NAME, U2.FULL_NAME) as SUBMITTER_NAME,
                        U2.FULL_NAME as SUBMITTER_FULLNAME,
                        U2.EMAIL as SUBMITTER_EMAIL,
                        if (U2.ID is null, 'z', concat('a', if ((LENGTH(U2.FULL_NAME) = 0), U2.USER_NAME, U2.FULL_NAME))) as SORT_SUBMITTER_NAME,
                        if (U3.ID is null, 'z', concat('a', if ((LENGTH(U3.FULL_NAME) = 0), U3.USER_NAME, U3.FULL_NAME))) as SORT_APPROVER_NAME,
                        if(APPROVAL='rejected', 'Rejected', if(APPROVAL='info', 'More Info Needed', if(APPROVAL='approved', 'Approved', if(APPROVER_ID>0, 'Pending', '')))) as APPROVAL_STATUS,
                        Q.NAME as QUEUE_NAME                       
                        from (HD_TICKET, HD_PRIORITY, HD_STATUS, HD_IMPACT, HD_CATEGORY)
                        LEFT JOIN USER U1 on U1.ID = HD_TICKET.OWNER_ID
                        LEFT JOIN USER U2 on U2.ID = HD_TICKET.SUBMITTER_ID
                        LEFT JOIN USER U3 on U3.ID = HD_TICKET.APPROVER_ID
                        LEFT JOIN HD_QUEUE Q on Q.ID = HD_TICKET.HD_QUEUE_ID
                        LEFT JOIN MACHINE M1 on M1.ID = HD_TICKET.MACHINE_ID
                        where HD_PRIORITY.ID = HD_PRIORITY_ID
                        and HD_STATUS.ID = HD_STATUS_ID
                        and HD_IMPACT.ID = HD_IMPACT_ID
                        and HD_CATEGORY.ID = HD_CATEGORY_ID
                        and ((  HD_TICKET.TITLE like '%Example String replace me!%' OR HD_TICKET.TITLE like '%Example String replace me!%') AND HD_STATUS.NAME like '%New%') /*Conditions are here you may add as many OR as you wish.*/
                        and HD_TICKET.HD_QUEUE_ID = 2
Select "Send an email for each result row"

subject: [TICK:$ticknum] NEW TICKET: $title
Email Column: OWNER_EMAIL
Email body: Whatever information you want to email the user based on the string your looking for in the query.("Example String replace me!")

Answered 02/12/2013 by: Jason22
White Belt

  • Depending on how many responses you want to have, this will get messy. If you wanted to get really complicated you could have the rule search the knowledge base for matching titles and grab the solution to be included in the message to the user. This way you would only have one rule in place.

    Another question, does this rule run on ticket save? If so, you might want to consider having it change the status of the ticket to something other than New, otherwise it might send the solution to the user again when someone updates the ticket (assuming they don't change the status when the update it).
Please log in to comment

This seems like a lot of rules to create and ensure that the logic is correct. I would probably just create a KB article that has the information  you are wanting to answer and then select it and have the comments appended to the ticket. This would mean you would have to have comments go out to the users. 

I am sure there is a reason for wanting to do this but as chucksteel indicated, unless you predefine the choices, it would get very tricky. 

Writing a rule to do the follow have a lot of variables from key words..


what is the wi-fi password?

what is the new wi-fi password?

what is the new wireless password?

Can I get the wireless pwd?


There are so many variables to expect when you put the question in the users hand. You could do a custom category


Password::Unknown:WiFi  <===this could trigger a rule to send an email with the password and also close the ticket.  Also you control the question and answer. 

Answered 02/11/2013 by: nshah
Red Belt

Please log in to comment
Answer this question or Comment on this question for clarity