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

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