Rails команде
Zammad користи Ruby он Rails, стога можете користити Rails конзолу.
WARNING
Пре покретања пажљиво проверите команде, јер неке од њих могу изазвати губитак података или оштећења тикета! Ако нисте сигурни, прво пробајте на тест систему!
Starting Zammad's Rails console
Извршавање појединачне команде
INFO
Замените {COMMAND} са вашом командом коју желите да извршите.
TIP
Ако ставите p испред команде (нпр. rails r 'p Delayed::Job.count'), добићете штампу излаза (без тога нећете!).
sh
docker compose run --rm zammad-railsserver bundle exec rails r '{COMMAND}'Run interactive Rails console
sh
docker compose run --rm zammad-railsserver bundle exec rails cБезбедни режим Rails конзоле
Обично, покретање Rails конзоле захтева да одређени сервиси трећих страна раде. Можете добити грешке и конзола неће почети са радом ако нису доступни.
Међутим, могуће је покренути Rails конзолу у безбедном режиму подешавањем посебне променљиве окружења. Са постављеним ZAMMAD_SAFE_MODE=1, ове провере се игноришу.
sh
ZAMMAD_SAFE_MODE=1 zammad run rails cRails команде
Добијање сировог емаила
Следећа команда ће вам помоћи да проверите примита EML датотеке које је Zammad преузео. Корисно је ако бришете маилове приликом преузимања и морате проверити саму EML датотеку.
Да бисте добили EML датотеку прве поруке, можете користити следећу команду. У нашем примеру, број тикета у питању је 101234.
ruby
Ticket.find_by(number:'101234').articles.first.as_raw.contentАко је потребно, можете добити и сиров садржај каснијих порука (ипак морате пронаћи одговарајућу поруку). И овде претпостављамо да је 101234 број наше тикета.
У првом кораку добијамо све ID-ове порука унутар тикета:
ruby
Ticket.find_by(number:'101234').article_idsИзлаз:
[4, 3, 2]Са листе коју добијемо, затим можемо добити садржај порука:
ruby
Ticket::Article.find(3).as_raw.contentINFO
Ако користите само Ticket::Article.find(3) можете видети додатне информације (као ко је послао мејл, када смо га преузели, ...).
Ажурирање свих карата одређеног клијента
WARNING
Имајте на уму да ова акција може бити ресурсно захтевна, ако имате много карата, што може успорити рад Zammad-а.
ruby
Ticket.where(customer_id: 4).update_all(customer_id: 1)Стање тикета
Ово ће приказати све типове статуса потребне за креирање нових статуса карата:
ruby
Ticket::StateType.pluck(:id, :name)Резултат ће бити и ID типа и назив - нпр.:
`[[1, "new"], [2, "open"], ...`.Rails команде
Корисник
To work on user information or to check for specific information, you'll need to find it first.
ID корисника је већ познат:
ruby
User.find(4)Претрага корисника по емаил адреси:
ruby
User.find_by(email: 'your@email')Претрага корисника по пријавном имену:
ruby
User.find_by(login: 'john.doe')Откључавање закључаног налога корисника
TIP
Откључавање закључаног налога корисника је такође подржано кроз веб интерфејс Zammad-а!
Повремено се дешава да се корисник сам закључа због неуспелих покушаја лозинке. У зависности од вашег максимума неуспешних пријава (подразумевано: 10 пута), Zammad може закључати налог.
Корисник се више не може пријавити (трајно) ако не промени лозинку или ви не ресетујете бројач.
ruby
u=User.find(**USERID**)ruby
u.login_failed=0ruby
u.save!Можете такође проверити да ли је налог закључан покретањем следеће команде (резултат мора бити за 1 изнад вашег лимита, дакле 11 за подразумеваних 10 неуспешних пријава):
ruby
User.find(**USERID**).login_failedПромена / Ажурирање емаил адресе корисника
Ако је потребно, можете једноставно променити емаил адресу корисника.
INFO
Имајте на уму да ово не утиче на атрибут за пријаву и да Zammad стога може приказати другачије информације у интерфејсу.
ruby
u = User.find(**USERID**)ruby
u.email = 'user@exmaple.com'ruby
u.save!За ово морате прво пронаћи ID корисника.
Промена / Ажурирање имена за пријаву корисника
Промените корисничко име (нпр. ако желите да се пријавите са краћим именом уместо емаил адресе)
ruby
u = User.find(**USERID**)ruby
u.login = 'user@exmaple.com'ruby
u.save!За ово морате прво пронаћи ID корисника.
Додељивање администраторских права кориснику
Немате више приступ Zammad-у? Доделите себи или другом кориснику администраторска права.
ruby
u = User.find_by(email: 'you@example.com')ruby
u.roles = Role.where(name: ['Agent', 'Admin'])ruby
u.save!Постављање лозинке за корисника
Заборавили сте ви или корисник лозинку? Нема проблема! По потреби је једноставно ресетујте ручно.
ruby
User.find_by(email: 'you@example.com').update!(password: 'your_new_password')Уклањање лозинке за корисника
Ако сте након покретања додали другу методу аутентификације (нпр. LDAP), у сопственом систему за управљање корисницима Zammad-а можда ће и даље постојати лозинка. У тим случајевима корисници ће моћи да се пријављују користећи своју (локалну) Zammad лозинку уз креденцијале са екстерног провајдера аутентификације. Једноставно уклоните лозинку коју је сачувао Zammad.
ruby
User.find_by(email: 'you@example.com').update!(password: nil)Rails команде
Пронађите групу
ruby
Group.find_by(name: 'Users').follow_up_possibleRails команде
Уклањање записа о IP адресама
Користите следећу команду за брисање свих записа о IP адресама са затворених цхатова који нису ажурирани у последњих седам дана:
ruby
Chat::Session.where(state: 'closed').where('updated_at < ?', 7.days.ago).each do |session|
next if session.preferences['remote_ip'].blank?ruby
session.preferences.delete('geo_ip')ruby
session.preferences.delete('remote_ip')ruby
session.save!(touch: false)
endZammad тим
У овом одељку можете пронаћи нека подешавања која такође можете подесити у Zammad интерфејсу.
Подешавање аутоматског гашења
Defines if an automatic shutdown of Zammad is performed when the database has been changed (e.g. after custom attributes have been created in the object manager). The underlying system (Systemd, Docker, Kubernetes) will then restart the processes/containers after this shutdown. The default setting is true.
Постављање на false има смисла само у веома ретким случајевима, након чега морате ручно рестартовати Zammad сервисе.
ruby
Setting.set('auto_shutdown', 'true')Стање тикета
Ово ће вам дати "хоок" тикета који ћете наћи унутар [] испред броја тикета. Подразумевано ће бити Ticket# - не бисте требали мењати ово подешавање у продукцијском систему.
ruby
Setting.get('ticket_hook')Подешавање FQDN-a
Проверите тренутно FQDN подешавање Zammad-а и, ако је потребно, прилагодите га.
INFO
Ово подешавање не утиче на SSL сертификате нити на било коју конфигурацију веб сервера концефигурације.
Проверите тренутни FQDN:
ruby
Setting.get('fqdn')Подесите нови FQDN:
ruby
Setting.set('fqdn', 'new.domain.tld')Подешавање HTTP(с)
Ово подешавање је индиректно везано за ваше FQDN подешавање и важно је за URL-ове засноване на променљивим (нпр. у нотификацијама) које генерише Zammad.
WARNING
Ово подешавање такође утиче на понашање CSRF токена у Zammad-у. Ако га поставите нпр. на HTTPs, а користите HTTP, пријављивање корисника неће бити могуће!
Не утиче на SSL сертификате или било какву конфигурацију веб сервера.
Проверите тренутну врсту HTTP протокола:
ruby
Setting.get('http_type')Промените тип хттп на HTTPs:
ruby
Setting.set('http_type', 'https')Подешавање пружача складишта
Подразумевано је подешавање пружача складишта постављено на DB. Међутим, ако примате много прилога или имате поприлично оптерећену инсталацију, коришћење базе података за чување прилога није најбољи приступ.
Дохватите тренутно складиште прилога:
ruby
Setting.get('storage_provider')Промените складиште прилога у базу података
ruby
Setting.set('storage_provider', 'DB')Ако имате већ сачуване фајлове и желите да их преместите, можете користити следећи пример. Имајте на уму да се ова операција треба извршавати само у непроизводним окружењима. У случају да је морате извршити у производним окружењима, навести ћете период мировања - у супротном Zammad може престати да реагује.
Преместите фајлове из DB на File са наведеним закашњењем након сваког фајла у секундама:
ruby
Store::File.move('DB', 'File', delay_in_sec)Следећа подешавања су доступна у подразумеваној инсталацији:
DB(база података)File(фајл систем (/opt/zammad/storage/))
Elasticsearch
Ако се ваша Elasticsearch инсталација промени, можете користити следеће команде да бисте осигурали да Zammad и даље може приступити Elasticsearch-у.
Промените Elasticsearch URL:
ruby
Setting.set('es_url', 'http://127.0.0.1:9200')Промените корисника Elasticsearch-а (нпр. за аутентификацију):
ruby
Setting.set('es_user', 'elasticsearch')Промените лозинку Elasticsearch-а за аутентификацију:
ruby
Setting.set('es_password', 'zammad')Промените назив индекса:
ruby
Setting.set('es_index', Socket.gethostname + '_zammad')Игноришите фајлове на основу екстензије при индексевању:
ruby
Setting.set('es_attachment_ignore', %w[.png .jpg .jpeg .mpeg .mpg .mov .bin .exe .box .mbox])Ограничите величину прилога:
ruby
Setting.set('es_attachment_max_size_in_mb', 50)Укључите или искључите проверу SSL-а:
ruby
Setting.set('es_ssl_verify', 'false')Омогући proxy
Подесите proxy који ће користити Zammad:
ruby
Setting.set('proxy', 'proxy.example.com:3128')ruby
Setting.set('proxy_username', 'some user')ruby
Setting.set('proxy_password', 'some pass')Искључи Asciifold
Ова функција је подразумевано укључена. У случају да вам је потребна прецизнија претрага, можете је искључити:
ruby
Setting.set('es_asciifolding', false)Након промене подешавања, обавезно поново изградите индекс претраге.
Скривена подешавања
У овом одељку можете пронаћи нека подешавања која нећете наћи унутар Zammad интерфејса. Ова подешавања могу вам користити јер могу променити понашање Zammad-а.
Пошаљите све одлазне емаил-ове на BCC сандучицу
Ова опција вам омогућава да пошаљете све одлазне мејлове (не обавештења) на одређено сандуче. Имајте на уму да то не би требало да буде сандуче које већ импортујете! Ово ће се применити на све групе и представља глобално подешавање.
ruby
Setting.set('system_bcc', 'alias@domain.tld')Можете лако проверити тренутно BCC подешавање покретањем следећег:
ruby
Setting.get('system_bcc')Активирајте бројач на груписаним прегледима
Ово омогућава приказ вредности броја налога у сваком заглављу за груписане елементе.
Омогућите бројач на груписаним прегледима:
ruby
Setting.set('ui_table_group_by_show_count', true)Искључите бројач на груписаним прегледима:
ruby
Setting.set('ui_table_group_by_show_count', false)Преузмите тренутно подешавање (nil је false):
ruby
Setting.get('ui_table_group_by_show_count')Подразумевана врста тикета на отварању
Zammad вам омогућава да одредите подразумевану врсту чланка при отварању тикета. Подразумевано ће то бити долазни телефонски позив.
Можете изабрати између
phone-in(долазни позив, подразумевано),phone-out(одлазни позив) иemail-out(слање имејл поруке).
ruby
Setting.set('ui_ticket_create_default_type', 'email-out')Да бисте проверили које је подешавање тренутно постављено, једноставно покрените:
ruby
Setting.get('ui_ticket_create_default_type')Приказује напомену приликом додавања чланка
Ако треба да својим оператерима прикажете напомену са важним информацијама током креирања чланка, можете додати такву статичну напомену за различите врсте чланака. Имајте на уму да постоје два подешавања: једно за отварање тикета, а друго за додавање чланка у постојећи тикет. Прилагодите команде испод да их употребите за жељене врсте чланака и замените текст својим. У случају да не желите напомену за све врсте чланака, једноставно изоставите те врсте.

Радње тикета
ruby
Setting.set('ui_ticket_create_notes', {
:"phone-in" => "You're about to note a incoming phone call.",
:"phone-out" => "You're about to note an outgoing phone call.",
:"email-out" => "You're going to send out an email."
})Нови чланак у постојећим тикетима
ruby
Setting.set('ui_ticket_add_article_hint', {
:"note-internal" => "You are writing an |internal note|, only people of your organization will see it.",
:"note-public" => "You are writing a |public note|.",
:"phone-internal" => "You are writing an |internal phone note|, only people of your organization will see it.",
:"phone-public" => "You are writing a |public phone note|.",
:"email-internal" => "You are writing an |internal email|, only people of your organization will see it.",
:"email-public" => "You are writing a |public email|."
})Подешавања
ruby
Setting.get('ui_ticket_create_notes')ruby
Setting.get('ui_ticket_add_article_hint')Ознаке у тексту
Да бисте применили форматирање текста, користите следеће ознаке:
||italic|||bold|_underline_//strikethrough//§key§(приказује тастер на тастатури као key)¶(нови ред)[link text](/example.com)
Приказ имејл адресе клијента при избору клијента (отварање тикета)
Подразумевано, Zammad не приказује имејл адресе клијената. Опција испод вам омогућава да промените ово понашање.
ruby
Setting.set('ui_user_organization_selector_with_email', true)Преузмите тренутно стање овог подешавања помоћу:
ruby
Setting.get('ui_user_organization_selector_with_email')Промена подешавања фонта за одлазне HTML имејл поруке
INFO
Неки клијенти (као што је Outlook) могу да се врате на друга подешавања, док код других клијената то може да функционише.
Подешавање испод вам омогућава да прилагодите Zammad-ово подешавање фонта за имејл. Ово подешавање не захтева поновно покретање сервиса.
ruby
Setting.set("html_email_css_font", "font-family:'Helvetica Neue', Helvetica, Arial, Geneva, sans-serif; font-size: 12px;")Преузмите тренутно стање овог подешавања помоћу:
ruby
Setting.get('html_email_css_font')Увозе се само клијенти карата
Ова опција унапређује број отворених тикета одабраног клијента. Означава број различитим бојама ако достигне граничну вредност.
ruby
Setting.set('ui_sidebar_open_ticket_indicator_colored', true)Подешавање изнад има одређене граничне вредности како следи. Ове граничне вредности не можете да мењате.
| Situation / View | no indication | warning (orange) | danger (red) |
|---|---|---|---|
| Ticket detail view | < 2 | 2 | >= 3 |
| New Ticket dialog | 0 | 1 | >= 2 |
Укључује преглед прилога у бочној траци тикета
Ова опција активира нови језичак у бочној траци са десне стране у приказу тикета који приказује све прилоге тренутно приказаног тикета.
ruby
Setting.set('ui_ticket_zoom_sidebar_article_attachments', 'true')Временски период за приказ профила клијента при новим позивима
Zammad приказује дијалог профила клијента када долази позив тог клијента и када постоји постојећи тикет тог клијента у овом временском периоду. Подразумевани временски период је 30 дана. Ако у том периоду нема тикета, дијалог клијента се не приказује аутоматски.
Поставите временски период на 90 дана:
ruby
Setting.set('cti_customer_last_activity', '90')Постављање јавних „напомена” као релевантних за SLA
Уобичајено, напомене нису релевантне за SLA. Употребите следећу команду да укључите јавно видљиве напомене при праћењу поштовања SLA (интерне напомене никада неће утицати на SLA прорачуне). Имајте на уму да ће ово подешавање онемогућити опцију брисања јавних напомена.
INFO
Подразумевано, клијенти нису обавештени када се јавне белешке додају на тикету. Подесите окидач ако желите да промените ово понашање.
Омогући SLA да рачуна белешке као комуникацију:
ruby
Ticket::Article::Type.find_by(name:'note').update!(communication: true)Омогући SLA да игнорише белешке као комуникацију:
ruby
Ticket::Article::Type.find_by(name:'note').update!(communication: false)Активирај икону приоритета
Да бисте активирали додатне иконе које представљају приоритет, користите наредбу испод:
ruby
Setting.set('ui_ticket_priority_icons', true)Остале корисне наредбе
Функције
AI функција у Zammad-у је потпуно опциона и захтева конфигурацију пре било ког AI захтева. Међутим, ако не желите да видите ову функцију, можете онемогућити дозволу.
Онемогући било ког AI провајдера, у случају да сте га већ конфигурисали:
ruby
Setting.set('ai_provider', false)Онемогући дозволу за скривање подешавања у интерфејсу:
ruby
Permission.where(\"наме LIKE 'admin.ai%'\").упдате!(ацтиве: фалсе)Да бисте га поново омогућили, поставите ознаку active на true.
Преузми имејлове
Наредба испод ће ручно преузети канале за поштански промет. Такође ће приказати грешке које могу настати током тог процеса.
ruby
Channel.fetchПоновна обрада неуспешних имејлова
Када Zammad преузме имејл који не може да анализира (нпр. због грешке у парсеру или неправилне поруке), чуваће га у бази података и упозори у секцији за надзор о томе.
У случају неправилне поруке (нпр. неважећа адреса имејла у једном од заглавља), можда ћете морати ручно да уредите имејл пре него што га Zammad може обрадити. Да бисте то урадили, следите кораке испод.
Извези све неуспешне имејлове у локални фолдер
sh
rake zammad:email_parser:failed_email:export_all`Локацију извезеног имејла можете пронаћи у излазу конзоле. Сваки пут када извршите извоз неуспешних (необрађивих) имејлова, ствара се један фолдер који садржи све неуспешне имејлове у тренутку извршења.
Уреди имејл
Имејл је извезен у кораку изнад. Сада га можете погледати и покушати да поправите. Обавезно оставите име фајла непромењено, јер ће у супротном унос бити неуспешан.
Увоз и поновна обрада локално измењеног имејла
Након уређивања имејла, покрените:
sh
rake zammad:email_parser:failed_email:import path/to/your/email.emlОво ће применити ваше промене из фајла на базу података. Такође можете проследити цео фолдер као аргумент, тако да ће све .eml фајлови у њему бити увезени и поново обрађени. Ако је поновна обрада имејла успешна, фајл(и) ће бити обрисани, а празан фолдер уклоњен.
TIP
Уверите се да покрећете ове команде само из главног Zammad фолдера /opt/zammad. Може доћи до проблема ако покушате да их покренете из унутар генерисаног подфолдера.
Обриши нежељене имејлове
У случају нежељених имејлова попут спама, можете их обрисати из базе података након што их извезете помоћу следеће команде:
sh
rake zammad:email_parser:failed_email:delete path/to/your/email.emlАко уместо тога проследите фолдер за извоз као аргумент, сви садржани имејлови ће бити уклоњени из базе података, њихови фајлови обрисани, а на крају и празан фолдер уклоњен.
Прикажи и поново покрени неуспеле послове за приватност података
У ретким случајевима, послови за приватност података у Zammad-у могу бити неуспешни. Да бисте их приказали, можете користити следећу раке команду:
sh
rake zammad:data_privacy:failed:showДа бисте поново покренули неуспеле послове за приватност података, можете користити следећу команду. Међутим, без решавања основног проблема који је узроковао неуспех, посао ће поново бити неуспешан. Зато се уверите да прегледате логове ради утврђивања узрока неуспеха и отклоните га пре поновног покретања посла.
sh
rake zammad:data_privacy:failed:retryПопуни тестни систем тест подацима
DANGER
Не покрећите ово у продукцијском окружењу! Ово може успорити Zammad и тешко је поништити!
Наредба испод ће додати 50 агената, 1000 клијената, 20 група, 40 организација, 5 нових прегледа и 100 тикета. Увек можете користити 0 да не бисте креирали одређене ставке. Zammad ће генерисати насумичне податке који немају логичко значење.
ruby
FillDb.load(agents: 50,customers: 1000,groups: 20,organizations: 40,overviews: 5,tickets: 100,)Брисање записа
DANGER
☠️ Наредбе наведене овде узрокују неповратни губитак података! Наставите само ако знате шта радите и ако имате резервну копију!
Уклањање тикета (и њихових чланака)
Обриши тикет (наведен по ID-у базе података):
ruby
Ticket.find(4).destroyОбриши све тикете:
ruby
Ticket.destroy_allЗадржите неке тикета (наведене по ID-у у бази); обришите остале:
ruby
tickets_to_keep = [1, 2, 3]ruby
Ticket.where.not(id: tickets_to_keep).destroy_allБрисање корисника
WARNING
Клијенти не могу бити обрисани док имају преостале тикете у систему.
Услед тога, примери испод бришу не само одабране клијенте, него и све тикете повезане са њима. Команде испод бришу без додатних упозорења.
TIP
Ако нисте сигурни шта да урадите и треба вам више информација о томе шта Zammad чини приликом брисања корисника, размотрите коришћење опција у Zammad-овом интерфејсу. Опцију за приватност података можете пронаћи у админ делу Zammad-а на Систем > Приватност података.
Брисање корисника је могуће на 2 начина: појединачно и у маси.
Уклоните једног корисника:
ruby
User.find_by(email: '<email address>').destroyУклоните више корисника:
ruby
User.where(
email: ['<email address 1>', '<email address 2>']
).destroy_allОрганизација
INFO
Брисање организације не брише повезане клијенте.
Корак 1: Одаберите организације
По статусу "активно":
ruby
organizations = Organization.where(active: false)По називу:
ruby
organizations = Organization.where(name: 'Acme')По делимичном подударању у белешкама:
ruby
organizations = Organization.where('note LIKE ?', '%foo%')Корак 2: Прегледајте погођене организације
ruby
puts organizations.map { |org| "ORGANIZATION #{org.name}" }.join("\n")Корак 3: Наставите са брисањем
ruby
organizations.each до |орг|
путс %{Priprema brisanja organizacije "#{org.name}"...}ruby
org.members.each до |мембер|
путс " Уклањање #{member.fullname} из организације..."
member.update!(организатион_ид: нил)
ендruby
путс " Брисање #{org.name}..."
org.destroy
ендБрисање системских записа
Уклоните сва онлине обавештења:
ruby
OnlineNotification.destroy_allУклоните све уносе из протока активности (табло):
ruby
ActivityStream.destroy_allУклоните записе за све недавно прегледане објекте (тикета, кориснике, организације):
ruby
RecentView.destroy_allУклоните све историјске информације из карата, корисника и организација (опасно!):
ruby
History.destroy_all/sr/get-zammad/installation
DANGER
Наредбе испод су намерно непотпуне, излаз грешака ће вам помоћи! Следеће операције ће изазвати губитак података и служе само за развој / тестирање.
Не заборавите да зауставите Zammad пре покушаја брисања базе!
Пражњење базе података:
sh
rake zammad:db:truncateМиграција базе података:
sh
rake db:migrateУчитајте почетне податке (сеед):
sh
rake db:seedОчистите кеш и поново учитајте подешавања:
sh
rake zammad:db:rebuildTIP
Такође можете користити команду zammad:db:reset за ресетовање инстанце. Овај задатак ће испразнити базу, покренути миграције, учитати сеед податке, очистити цацхе и поново учитати подешавања. Међутим, неће тражити вашу потврду између сваког корака, па је треба користити опрезно.