Tickets: Help Desk and Knowledge Base

Tickets: Help Desk and Knowledge Base [Paid] 2.9.2

No permission to buy ($60.00)
Naz updated Tickets with a new update entry:

Version 2.8.0

  • Add support for XenForo 2.3+.
  • Require PHP 8.0+.
  • Require Standard Library by Xon v1.21.0+.
  • Add support for rejected and disabled users to create tickets.
  • Add support for silently editing ticket messages.
  • Add support for uploading audio/video files to ticket messages.
  • Add support for uploading audio/video files to knowledge base articles.
  • Add webhook support for tickets and ticket messages. XF 2.3+ only.
  • Add tracking for basic ticket statistics.
  • Add option...

Read the rest of this update entry...
 
@Naz, can you explain these 3 lines please?

  • Add tracking for basic ticket statistics.
  • Add option to hide categories from the new ticket chooser but still allow tickets to be created within them.
  • Add options to statuses to transition tickets to another status depending on staff or user reply.
 
@Naz, can you explain these 3 lines please?
Sure:
Add tracking for basic ticket statistics.
Some additional but still relatively statistics are tracked and stored for tickets now in preparation for display in a future version.
Add option to hide categories from the new ticket chooser but still allow tickets to be created within them.
Categories now have an option to hide them from the list of categories when creating new tickets. Tickets can still be created if through the direct URL to the category.
Add options to statuses to transition tickets to another status depending on staff or user reply.
There are new options on statuses to change the status on a ticket when someone replies to a ticket. For example, you can move a ticket to a "Pending" status when a staff member replies and move it to an "Open" status when a regular user replies. This was previously achieved through escalations but makes it easier to achieve the behaviour @CStrategies was looking for here.
 
Posting here to see if any users of this addon might have any tips... I'm trying to set up the email handler using gmail (our google workspace account). I'm using imap.gmail.com and port 993. Verified several times that the email and password is correct, but error always says wrong credentials. I'm not sure how to make gmail happy....

Code:
Laminas\Mail\Storage\Exception\RuntimeException: Ticket category email connection error: cannot login, user or password wrong src/vendor/laminas/laminas-mail/src/Storage/Imap.php:218
 
Posting here to see if any users of this addon might have any tips... I'm trying to set up the email handler using gmail (our google workspace account). I'm using imap.gmail.com and port 993. Verified several times that the email and password is correct, but error always says wrong credentials. I'm not sure how to make gmail happy....

Code:
Laminas\Mail\Storage\Exception\RuntimeException: Ticket category email connection error: cannot login, user or password wrong src/vendor/laminas/laminas-mail/src/Storage/Imap.php:218

Google Workspace has been planning to phase out less secure apps/authentication in Gmail for a while now. However, when I checked last month, it was still functional.

Try this, then this 🤞
 
@Naz

Seeing this error when guests try to reply to tickets. Running XF 2.3.3 and Tickets 2.8.0.

Code:
Server error log

    ErrorException: [E_WARNING] Attempt to read property "is_moderator" on null src/addons/NF/Tickets/Entity/Message.php:442

    Generated by: Unknown account Sep 21, 2024 at 2:40 PM

Stack trace

#0 src/addons/NF/Tickets/Entity/Message.php(442): XF::handlePhpError(2, '[E_WARNING] Att...', '/home/xf/p...', 442)
#1 src/addons/NF/Tickets/Entity/Ticket.php(1080): NF\Tickets\Entity\Message->isStaffReply()
#2 src/addons/NF/Tickets/Entity/Message.php(760): NF\Tickets\Entity\Ticket->messageAdded(Object(NF\Tickets\Entity\Message))
#3 src/addons/NF/Tickets/Entity/Message.php(703): NF\Tickets\Entity\Message->updateTicketRecord()
#4 src/XF/Mvc/Entity/Entity.php(1324): NF\Tickets\Entity\Message->_postSave()
#5 src/addons/NF/Tickets/Service/Ticket/Replier.php(269): XF\Mvc\Entity\Entity->save(true, false)
#6 src/XF/Service/ValidateAndSavableTrait.php(42): NF\Tickets\Service\Ticket\Replier->_save()
#7 src/addons/NF/Tickets/Pub/Controller/Ticket.php(642): NF\Tickets\Service\Ticket\Replier->save()
#8 src/XF/Mvc/Dispatcher.php(362): NF\Tickets\Pub\Controller\Ticket->actionAddMessage(Object(XF\Mvc\ParameterBag))
#9 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'AddMessage', Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#10 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#11 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#12 src/XF/App.php(2826): XF\Mvc\Dispatcher->run()
#13 src/XF.php(806): XF\App->run()
#14 index.php(23): XF::runApp('XF\\Pub\\App')
#15 {main}

Request state

array(4) {
  ["url"] => string(22) "/tickets/4/add-message"
  ["referrer"] => string(37) "https://sub.domain.com/tickets/4/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(13) {
    ["_xfToken"] => string(8) "********"
    ["message"] => string(3) "..."
    ["user_name"] => string(9) "Test User"
    ["user_email"] => string(22) "test@domain.com"
    ["cf-turnstile-response"] => string(837) "0.z-MNg0ACcEy5TRrbCqq7n2IMCYVgTlRy_RaBQQTpbVuJZIhTn0igXEgJ-ToqKw5YYXh7OrLbFOm4EgfnwGF9t5m_7kW4DkFQqvjFD7qYB2Rf87Z5Z-iemy8gxDCDU_iXEAu4GP2sQfyTCR-zqs_BCaXFt1W0wCKqW_0XNoDWpxFX_98rxcWaY6dF852v6pbcFbNxUTX5qYOE0LwpUO3a0_o2ZQ9rAVXQQop-AEWZsRVkf4KRNPDqSK83YUEQIhnxnMnVzzLfU2qy1pXxLE1z8izEf5QtkNh_yuqsRZIzx81Lf1s6zT0DOrS-lSNVvb63j77M64R1rvKE5KUdWuqORLVKLfqPKMqQiaq2F4Tz43NNEdh683jAnIlNN2D_We6adFAz0xqp5X_NF-MdR1Vn9R5dlHxHz2fdmXG8TjrHdnMWELvdnRh6wix1VlB9MmYtsEkPmX4fPlzc-IDA1g3LnmtdEz_6FVelsReXyjRit1UVjpjY-aNsKtKPunB-1w3j7_Y1sfdCPRTkWKJgXqeUb1bdJF6Pwly_cLtOIHzWlk8XxxPOqFHo7_X-HVdI_9ZysWWHtYyxNAf7ssTbgRjkV7jKfLlz1feRvhg7Sy-vgWjM_X4s1UoQ6jIEsDitKKkdTO0Er1uP_TUwjqncacq1UZnLRIPCQnlMmZYKAkC5U_647e9CGqhTXLaMizY0qb9Qxju3bnsi3dQvZynlp3vVd-3skWg6EwJNTLRvF018lQw._wG6DcNanTMul7HIEYmA5g.9f14562bca723756a325b207cd2f8059b19e6fa301dafc4a0cf4e83e01cef98c"
    ["attachment_hash"] => string(32) "d1a3467df9a646cee2ff07204c58a5d6"
    ["attachment_hash_combined"] => string(97) "{"type":"nf_tickets_message","context":{"ticket_id":4},"hash":"d1a3467df9a646cee2ff07204c58a5d6"}"
    ["last_date"] => string(10) "1726953366"
    ["last_known_date"] => string(10) "1726953366"
    ["reply_ticket_state"] => string(1) "0"
    ["_xfResponseType"] => string(4) "json"
    ["_xfWithData"] => string(1) "1"
    ["_xfRequestUri"] => string(11) "/tickets/4/"
  }
}
 
@Naz

Seeing this error when guests try to reply to tickets. Running XF 2.3.3 and Tickets 2.8.0.

Code:
Server error log

    ErrorException: [E_WARNING] Attempt to read property "is_moderator" on null src/addons/NF/Tickets/Entity/Message.php:442

    Generated by: Unknown account Sep 21, 2024 at 2:40 PM

Stack trace

#0 src/addons/NF/Tickets/Entity/Message.php(442): XF::handlePhpError(2, '[E_WARNING] Att...', '/home/xf/p...', 442)
#1 src/addons/NF/Tickets/Entity/Ticket.php(1080): NF\Tickets\Entity\Message->isStaffReply()
#2 src/addons/NF/Tickets/Entity/Message.php(760): NF\Tickets\Entity\Ticket->messageAdded(Object(NF\Tickets\Entity\Message))
#3 src/addons/NF/Tickets/Entity/Message.php(703): NF\Tickets\Entity\Message->updateTicketRecord()
#4 src/XF/Mvc/Entity/Entity.php(1324): NF\Tickets\Entity\Message->_postSave()
#5 src/addons/NF/Tickets/Service/Ticket/Replier.php(269): XF\Mvc\Entity\Entity->save(true, false)
#6 src/XF/Service/ValidateAndSavableTrait.php(42): NF\Tickets\Service\Ticket\Replier->_save()
#7 src/addons/NF/Tickets/Pub/Controller/Ticket.php(642): NF\Tickets\Service\Ticket\Replier->save()
#8 src/XF/Mvc/Dispatcher.php(362): NF\Tickets\Pub\Controller\Ticket->actionAddMessage(Object(XF\Mvc\ParameterBag))
#9 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'AddMessage', Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#10 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\Tickets\Pub\Controller\Ticket), NULL)
#11 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#12 src/XF/App.php(2826): XF\Mvc\Dispatcher->run()
#13 src/XF.php(806): XF\App->run()
#14 index.php(23): XF::runApp('XF\\Pub\\App')
#15 {main}

Request state

array(4) {
  ["url"] => string(22) "/tickets/4/add-message"
  ["referrer"] => string(37) "https://sub.domain.com/tickets/4/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(13) {
    ["_xfToken"] => string(8) "********"
    ["message"] => string(3) "..."
    ["user_name"] => string(9) "Test User"
    ["user_email"] => string(22) "test@domain.com"
    ["cf-turnstile-response"] => string(837) "0.z-MNg0ACcEy5TRrbCqq7n2IMCYVgTlRy_RaBQQTpbVuJZIhTn0igXEgJ-ToqKw5YYXh7OrLbFOm4EgfnwGF9t5m_7kW4DkFQqvjFD7qYB2Rf87Z5Z-iemy8gxDCDU_iXEAu4GP2sQfyTCR-zqs_BCaXFt1W0wCKqW_0XNoDWpxFX_98rxcWaY6dF852v6pbcFbNxUTX5qYOE0LwpUO3a0_o2ZQ9rAVXQQop-AEWZsRVkf4KRNPDqSK83YUEQIhnxnMnVzzLfU2qy1pXxLE1z8izEf5QtkNh_yuqsRZIzx81Lf1s6zT0DOrS-lSNVvb63j77M64R1rvKE5KUdWuqORLVKLfqPKMqQiaq2F4Tz43NNEdh683jAnIlNN2D_We6adFAz0xqp5X_NF-MdR1Vn9R5dlHxHz2fdmXG8TjrHdnMWELvdnRh6wix1VlB9MmYtsEkPmX4fPlzc-IDA1g3LnmtdEz_6FVelsReXyjRit1UVjpjY-aNsKtKPunB-1w3j7_Y1sfdCPRTkWKJgXqeUb1bdJF6Pwly_cLtOIHzWlk8XxxPOqFHo7_X-HVdI_9ZysWWHtYyxNAf7ssTbgRjkV7jKfLlz1feRvhg7Sy-vgWjM_X4s1UoQ6jIEsDitKKkdTO0Er1uP_TUwjqncacq1UZnLRIPCQnlMmZYKAkC5U_647e9CGqhTXLaMizY0qb9Qxju3bnsi3dQvZynlp3vVd-3skWg6EwJNTLRvF018lQw._wG6DcNanTMul7HIEYmA5g.9f14562bca723756a325b207cd2f8059b19e6fa301dafc4a0cf4e83e01cef98c"
    ["attachment_hash"] => string(32) "d1a3467df9a646cee2ff07204c58a5d6"
    ["attachment_hash_combined"] => string(97) "{"type":"nf_tickets_message","context":{"ticket_id":4},"hash":"d1a3467df9a646cee2ff07204c58a5d6"}"
    ["last_date"] => string(10) "1726953366"
    ["last_known_date"] => string(10) "1726953366"
    ["reply_ticket_state"] => string(1) "0"
    ["_xfResponseType"] => string(4) "json"
    ["_xfWithData"] => string(1) "1"
    ["_xfRequestUri"] => string(11) "/tickets/4/"
  }
}
Fixed in v2.8.1, thanks!
 
Excellent add-on, clean and powerful. I am totally happy with it. If the author allows me I have a few suggestion:

-add staff note (non visible to ticket owner)
-add predefined responses category based.
-add warnings tab next to user activity.

I've found him to be open to suggestions, however there are time limitations for him to work on things.

Posted 2021, so much open for suggestions lol
 
Google Workspace has been planning to phase out less secure apps/authentication in Gmail for a while now. However, when I checked last month, it was still functional.

Try this, then this 🤞
Thank you for this info. Yes this is a problem. I cannot seem to enable access from "less secure apps" and google workspace accounts will no longer allow any login with just a username/password after Sept 30th 2024. Seems it's affecting us a bit early...
 
Google Workspace has been planning to phase out less secure apps/authentication in Gmail for a while now. However, when I checked last month, it was still functional.

Try this, then this 🤞

Got it to work. I had to create an application password (using a extremely hard to find link... seems they are trying to phase these out).
 
Conflict with plugin https://xenforo.com/community/resources/xenconcept-hide-bbcode.6842/
I bought the Tickets plugin, but I can't use it. I hope the developer will hurry up

Code:
LogicException: Filterer 'limit' has already been registered in src/XF/BbCode/Processor.php at line 135
XF\BbCode\Processor->addFilterer() in src/XF/BbCode/Processor.php at line 66
XF\BbCode\Processor->addProcessorAction() in src/addons/XenConcept/HideBBCode/XF/Service/Message/Preparer.php at line 38
 
Conflict with plugin https://xenforo.com/community/resources/xenconcept-hide-bbcode.6842/
I bought the Tickets plugin, but I can't use it. I hope the developer will hurry up

Code:
LogicException: Filterer 'limit' has already been registered in src/XF/BbCode/Processor.php at line 135
XF\BbCode\Processor->addFilterer() in src/XF/BbCode/Processor.php at line 66
XF\BbCode\Processor->addProcessorAction() in src/addons/XenConcept/HideBBCode/XF/Service/Message/Preparer.php at line 38
This seems to be something the other add-on developer will need to handle in their add-on to prevent trying to add a processor action when one already exists.
 
after converting guest post to ticket
I guess there must be some kind of popup message instead just throwing an error.
Code:
InvalidArgumentException: Must provide userEmail if converting guest thread to ticket in src/addons/NF/Tickets/Service/Ticket/ThreadConverter.php at line 55
NF\Tickets\Service\Ticket\ThreadConverter->setThread() in src/addons/NF/Tickets/Service/Ticket/ThreadConverter.php at line 30
NF\Tickets\Service\Ticket\ThreadConverter->__construct() in src/XF/Container.php at line 276
XF\Container->createObject() in src/XF/App.php at line 1723
XF\App->XF\{closure}() in src/XF/Container.php at line 234
XF\Container->create() in src/XF/App.php at line 3163
XF\App->service() in src/XF.php at line 901
XF::service() in src/addons/SV/StandardLib/Helper.php at line 268
SV\StandardLib\Helper::service() in src/addons/NF/Tickets/XF/Pub/Controller/Thread.php at line 120
NF\Tickets\XF\Pub\Controller\Thread->setupThreadTicketConverter() in src/addons/NF/Tickets/XF/Pub/Controller/Thread.php at line 41
NF\Tickets\XF\Pub\Controller\Thread->actionConvertToTicket() in src/XF/Mvc/Dispatcher.php at line 352
XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 258
XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 115
XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 57
XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2485
XF\App->run() in src/XF.php at line 524
XF::runApp() in index.php at line 20
 
guest tickets also cannot be converted to posts

Code:
TypeError: XF::asVisitor(): Argument #1 ($user) must be of type XF\Entity\User, null given, called in /home/findozornet/public_html/forum/src/addons/NF/Tickets/Service/Ticket/Converter/ToThread.php on line 104 src/XF.php:890
Сгенерирована пользователем: Comepay 25 Дек 2024 в 22:22
Трассировка стека
#0 src/addons/NF/Tickets/Service/Ticket/Converter/ToThread.php(104): XF::asVisitor(NULL, Object(Closure))
#1 src/addons/NF/Tickets/Service/Ticket/Converter/ToThread.php(92): NF\Tickets\Service\Ticket\Converter\ToThread->addReply(Object(NF\Tickets\Entity\Message))
#2 src/addons/NF/Tickets/Service/Ticket/Converter/ToThread.php(76): NF\Tickets\Service\Ticket\Converter\ToThread->addReplies(Object(XF\Mvc\Entity\ArrayCollection))
#3 src/XF/Service/ValidateAndSavableTrait.php(42): NF\Tickets\Service\Ticket\Converter\ToThread->_save()
#4 src/addons/NF/Tickets/Pub/Controller/Ticket.php(1925): XF\Service\Thread\CreatorService->save()
#5 src/XF/Mvc/Dispatcher.php(362): NF\Tickets\Pub\Controller\Ticket->actionConvertToThread(Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('NF\\Tickets:Tick...', 'ConvertToThread', Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#7 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\UserActivity\NF\Tickets\Pub\Controller\Ticket), NULL)
#8 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#9 src/XF/App.php(2826): XF\Mvc\Dispatcher->run()
#10 src/XF.php(806): XF\App->run()
#11 index.php(23): XF::runApp('XF\\Pub\\App')
#12 {main}
 
Back
Top Bottom