Hi Martin, We've progressed on ticket assignment logic. We are currently able to auto assign new tickets to a random agent belonging to the same user group as the ticket every time a new ticket is created / email is fetched by a channel (thanks to your observer pattern tip!) Few more things if you could point on how to go about would help :)
1. How do we identify active agents who are currently logged in? I can see duplicate sessions for a user in the sessions table.. 2. We need to set up a UI to collect settings (enable/disable). Is there a generic store where we can define key value? 3. Each channel should have an auto assign true/false control. Also in case of email, we should be able to add this as an action in filters. Thanks On Tuesday, 12 September 2017 17:10:26 UTC+5:30, Vishnu S wrote: > > hey got the mail fetch working. Scheduler wasn't running :) my bad > > On Tuesday, 12 September 2017 14:51:40 UTC+5:30, Vishnu S wrote: >> >> Some logs: >> >> Completed 200 OK in 40ms (Views: 2.9ms | ActiveRecord: 9.3ms) >> I, [2017-09-12T14:39:11.331956 #7798] INFO -- : fetching imap ( >> imap.gmail.com/mytestemai...@gmail.com >> port=993,ssl=true,folder=INBOX,keep_on_server=false) >> I, [2017-09-12T14:39:14.381450 #7798] INFO -- : verify mode, fetch no >> emails #50967783246 >> I, [2017-09-12T14:39:14.832286 #7798] INFO -- : - verify email >> #50967783246 found >> I, [2017-09-12T14:39:15.877659 #7798] INFO -- : Completed 200 OK in >> 13457ms (Views: 0.5ms | ActiveRecord: 7.7ms) >> I, [2017-09-12T14:39:16.208863 #7798] INFO -- : Started GET >> "/api/v1/channels_email?_=1505207307360" for 127.0.0.1 at 2017-09-12 >> 14:39:16 +0530 >> I, [2017-09-12T14:39:16.215060 #7798] INFO -- : Processing by >> ChannelsEmailController#index as JSON >> I, [2017-09-12T14:39:16.215177 #7798] INFO -- : Parameters: >> {"_"=>"1505207307360", "channels_email"=>{}} >> I, [2017-09-12T14:39:16.242467 #7798] INFO -- : Completed 200 OK in 27ms >> (Views: 1.9ms | ActiveRecord: 4.9ms) >> I, [2017-09-12T14:39:20.564939 #7798] INFO -- : Completed 200 OK in >> 25024ms (Views: 0.2ms | ActiveRecord: 1.5ms) >> I, [2017-09-12T14:39:20.571661 #7798] INFO -- : Started POST >> "/api/v1/message_receive" for 127.0.0.1 at 2017-09-12 14:39:20 +0530 >> I, [2017-09-12T14:39:20.575954 #7798] INFO -- : Processing by >> LongPollingController#message_receive as JSON >> I, [2017-09-12T14:39:20.576052 #7798] INFO -- : Parameters: >> {"client_id"=>"4605788166", "long_polling"=>{"client_id"=>"4605788166"}} >> I, [2017-09-12T14:39:34.290205 #7798] INFO -- : Started GET >> "/api/v1/channels_email?_=1505207307361" for 127.0.0.1 at 2017-09-12 >> 14:39:34 +0530 >> I, [2017-09-12T14:39:34.294533 #7798] INFO -- : Processing by >> ChannelsEmailController#index as JSON >> I, [2017-09-12T14:39:34.294599 #7798] INFO -- : Parameters: >> {"_"=>"1505207307361", "channels_email"=>{}} >> I, [2017-09-12T14:39:34.317466 #7798] INFO -- : Completed 200 OK in 23ms >> (Views: 2.0ms | ActiveRecord: 4.7ms) >> I, [2017-09-12T14:39:45.596024 #7798] INFO -- : Completed 200 OK in >> 25020ms (Views: 0.3ms | ActiveRecord: 1.5ms) >> I, [2017-09-12T14:39:45.603666 #7798] INFO -- : Started POST >> "/api/v1/message_receive" for 127.0.0.1 at 2017-09-12 14:39:45 +0530 >> I, [2017-09-12T14:39:45.609050 #7798] INFO -- : Processing by >> LongPollingController#message_receive as JSON >> I, [2017-09-12T14:39:45.609220 #7798] INFO -- : Parameters: >> {"client_id"=>"4605788166", "long_polling"=>{"client_id"=>"4605788166"}} >> I, [2017-09-12T14:40:04.291113 #7798] INFO -- : Started GET >> "/api/v1/channels_email?_=1505207307362" for 127.0.0.1 at 2017-09-12 >> 14:40:04 +0530 >> I, [2017-09-12T14:40:04.296788 #7798] INFO -- : Processing by >> ChannelsEmailController#index as JSON >> I, [2017-09-12T14:40:04.296907 #7798] INFO -- : Parameters: >> {"_"=>"1505207307362", "channels_email"=>{}} >> I, [2017-09-12T14:40:04.331139 #7798] INFO -- : Completed 200 OK in 34ms >> (Views: 4.1ms | ActiveRecord: 6.1ms) >> >> >> >> >> On Tuesday, 12 September 2017 14:48:50 UTC+5:30, Vishnu S wrote: >>> >>> Hi Martin, >>> >>> We managed to get auto assigning working (not a clean code yet, we're >>> working on it). I was testing email channel set up locally, but it fail to >>> download emails to my local instance. Any reason you can think of that >>> could cause it? The reason why we need to test email channel is that we >>> want to trigger the auto assignment after all filters are applied and group >>> assignment triggers are done. >>> >>> Its a test gmail account we created, and it can detect and say there are >>> this many emails pending, but it doesnt download them and show up as >>> tickets for some reason. >>> >>> Thanks >>> >>> On Friday, 8 September 2017 11:40:07 UTC+5:30, Vishnu S wrote: >>>> >>>> Hey Martin, >>>> >>>> Thanks for that.. We'll check it out and will let you know.. :) >>>> >>>> >>>> >>>> On Thursday, 7 September 2017 18:45:36 UTC+5:30, Martin Edenhofer wrote: >>>>> >>>>> Hi Vishnu, >>>>> >>>>> wonderful usecase! ❤️ >>>>> >>>>> By the way, it's also somethin which would fit into Zammad standard. >>>>> >>>>> However, I see 2 features: >>>>> >>>>> 1) Auto assignment of Tickets at open time >>>>> 2) Auto assignment of Tickets at ticket creation >>>>> >>>>> >>>>> Where is the best place for: >>>>> 1) Could be implemented in the UI, if ticket is opened and no owner is >>>>> assigned to auto assignment to the current own. >>>>> >>>>> 2) This is quite easy too, if you have the logic how to >>>>> determine which agent will get the ticket assigned. In ruby on rails you >>>>> can hook into callback. In this case for example "before_create" of any >>>>> ticket. >>>>> Here you can put the logic of e. g. round-robin and assign the new >>>>> agent for ticket creation. >>>>> >>>>> Read more at: >>>>> http://guides.rubyonrails.org/v5.0/active_record_callbacks.html >>>>> >>>>> An example in Zammad you can fine here: >>>>> https://github.com/zammad/zammad/blob/develop/app/models/observer/ticket/user_ticket_counter.rb#L3 >>>>> >>>>> or >>>>> https://github.com/zammad/zammad/blob/develop/app/models/observer/ticket/close_time.rb#L31 >>>>> >>>>> >>>>> In case, just fork zammad on github and I can light you the way >>>>> directly. >>>>> >>>>> -Martin >>>>> >>>>> >>>>> Am Donnerstag, 7. September 2017 11:56:32 UTC+2 schrieb Vishnu S: >>>>>> >>>>>> Hi Martin, >>>>>> >>>>>> When you have several dozen agents and thousands of tickets coming >>>>>> in, manual ticket claims become very impractical. There may be confusion >>>>>> on >>>>>> what tickets to pick; multiple agents may try to pick the same ticket >>>>>> (there's no locking mechanism); if there are economic incentives, >>>>>> tickets >>>>>> may get hoarded. >>>>>> >>>>>> The distribution and resolution of tickets will become erratic and >>>>>> uneven. >>>>>> >>>>>> With automatic assignment, the burden of assignment is not on the >>>>>> agent, but on the system. To start off with, a simple round-robin, or >>>>>> even >>>>>> random assignment of tickets to agents within a group will ensure even >>>>>> distribution. >>>>>> >>>>>> - Ticket arrives. Filters and triggers are applied. >>>>>> - If there's a Group (post filtering), pick a random agent from the >>>>>> group and assign. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Thursday, 7 September 2017 14:55:38 UTC+5:30, Martin Edenhofer >>>>>> wrote: >>>>>>> >>>>>>> Hi Vishnu, >>>>>>> >>>>>>> to give you "good" tip, it would ne nice to know the full usecase >>>>>>> from users perspective. >>>>>>> >>>>>>> It would also be fine to know hat it the mechanism/rule for ticket >>>>>>> auto assignment (random?). >>>>>>> >>>>>>> -Martin >>>>>>> >>>>>>> Am Donnerstag, 7. September 2017 11:18:35 UTC+2 schrieb Vishnu S: >>>>>>>> >>>>>>>> Hi there, >>>>>>>> >>>>>>>> We'd like to build a simple ticket auto assignment plugin for >>>>>>>> Zammad. Is there any starting point for this? How do we go about >>>>>>>> writing a >>>>>>>> plugin? >>>>>>>> >>>>>>> -- Open Source as Download https://zammad.org || Easy to use as SaaS https://zammad.com --- You received this message because you are subscribed to the Google Groups "zammad-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to zammad-users+unsubscr...@googlegroups.com. To post to this group, send email to zammad-users@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/zammad-users/5fb9868a-0fa0-4e02-87f8-d8cf138b8dc7%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.