Zammad: 개체 κ΄€λ¦¬μžκ°€ μƒˆ μƒνƒœ μΆ”κ°€

에 λ§Œλ“  2017λ…„ 01μ›” 02일  Β·  25μ½”λ©˜νŠΈ  Β·  좜처: zammad/zammad

개체 κ΄€λ¦¬μžμ—μ„œ μƒˆ ν‹°μΌ“ μƒνƒœλ₯Ό λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€. κ΄€λ¦¬μž/ν‹°μΌ“ 개체λ₯Ό ν΄λ¦­ν•˜λ©΄ λͺ¨λ“  ν•­λͺ©μ„ 클릭할 수 μ—†μŠ΅λ‹ˆλ‹€.

duplicate

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 경우 APIκ°€ 잘λͺ»λ˜μ—ˆλ‹€λŠ” λ§μž…λ‹ˆκΉŒ? λ¬Έμ„œμ— κΈ°λ‘λ˜μ–΄ μžˆμ–΄μ•Ό ν•˜μ§€ μ•Šμ„κΉŒμš”?

REST APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 λ³€κ²½ μž‘μ—…μ„ μˆ˜ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

-=> 우리의 λͺ©ν‘œλŠ” UIλ₯Ό 톡해 μ»€λ²„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ 이것은 UIλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” μž‘μ€ λ―Έλ‹ˆ ν•˜μš°νˆ¬/ν•΄κ²° 방법 λ‹¨μœ„μž…λ‹ˆλ‹€.

λͺ¨λ“  25 λŒ“κΈ€

λˆ„κ΅°κ°€ μƒˆλ‘œμš΄ μƒνƒœλ₯Ό μΆ”κ°€ν•˜λŠ” 방법을 μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? "해결됨" μƒνƒœκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

μ–΄λ–€ 도움이 λœλ‹€λ©΄ 맀우 κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ:

API μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 λ¬Έμ„œμ— μƒˆ TicketStateλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. μƒˆ μƒνƒœκ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

{
    "id": 11,
    "state_type_id": 10,
    "name": "In Bearbeitung",
    "next_state_id": null,
    "ignore_escalation": true,
    "note": "In Bearbeitung",
    "active": true,
    "updated_by_id": 3,
    "created_by_id": 3,
    "created_at": "2017-01-02T21:13:27.003Z",
    "updated_at": "2017-01-02T21:13:27.003Z"
}

states

+1
λ˜ν•œ apiλ₯Ό 톡해 μƒˆ μƒνƒœλ₯Ό μΆ”κ°€ν–ˆμ§€λ§Œ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 무엇이 잘λͺ»λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆκΉŒ?

λ˜ν•œ "μž‘μ—… 진행 쀑" μƒνƒœκ°€ ν•„μš”ν•©λ‹ˆλ‹€. +1:

κ·Έ λ™μ•ˆ 레일슀 μ½˜μ†”μ„ 톡해 μƒˆ μƒνƒœλ₯Ό μΆ”κ°€ν•˜λŠ” μž‘μ€ 방법/ν•΄κ²° 방법(우리의 λͺ©ν‘œλŠ” UIλ₯Ό 톡해 이λ₯Ό λ‹€λ£¨λŠ” κ²ƒμž…λ‹ˆλ‹€):

μƒˆ μƒνƒœλ₯Ό μΆ”κ°€ν•˜κ³  "고객 ν”Όλ“œλ°±"이라고 κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

rails c
Ticket::State.create_or_update(
  name: 'customer feedback',
  state_type_id: Ticket::StateType.find_by(name: 'open').id,
  ignore_escalation: true,
  created_by_id: 1,
  updated_by_id: 1,
)

두 번째둜 ν‹°μΌ“ μƒνƒœ 속성에 선택을 ν—ˆμš©ν•˜λ„λ‘ μ•Œλ €μ•Ό ν•©λ‹ˆλ‹€. 여기에 μ˜ˆκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ£Όμ˜ν•˜μ‹­μ‹œμ˜€(무슨 μž‘μ—…μ„ μˆ˜ν–‰ν• μ§€ λͺ¨λ₯΄λŠ” 경우 λ¨Όμ € λ°μ΄ν„°λ² μ΄μŠ€ 백업을 μƒμ„±ν•˜μ‹­μ‹œμ˜€)!

ObjectManager::Attribute.add(
  force: true,
  object: 'Ticket',
  name: 'state_id',
  display: 'State',
  data_type: 'select',
  data_option: {
    relation: 'TicketState',
    nulloption: true,
    multiple: false,
    null: false,
    default: Ticket::State.find_by(default_follow_up: true).id,
    translate: true,
    filter: Ticket::State.by_category(:viewable).pluck(:id),
  },
  editable: false,
  active: true,
  screens: {
    create_middle: {
      'ticket.agent' => {
        null: false,
        item_class: 'column',
        filter: Ticket::State.by_category(:viewable_agent_new).pluck(:id),
      },
      'ticket.customer' => {
        item_class: 'column',
        nulloption: false,
        null: true,
        filter: Ticket::State.by_category(:viewable_customer_new).pluck(:id),
        default: Ticket::State.find_by(default_create: true).id,
      },
    },
    edit: {
      'ticket.agent' => {
        nulloption: false,
        null: false,
        filter: Ticket::State.by_category(:viewable_agent_edit).pluck(:id),
      },
      'ticket.customer' => {
        nulloption: false,
        null: true,
        filter: Ticket::State.by_category(:viewable_customer_edit).pluck(:id),
        default: Ticket::State.find_by(default_follow_up: true).id,
      },
    },
  },
  to_create: false,
  to_migrate: false,
  to_delete: false,
  position: 40,
)

이 경우 APIκ°€ 잘λͺ»λ˜μ—ˆλ‹€λŠ” λ§μž…λ‹ˆκΉŒ? λ¬Έμ„œμ— κΈ°λ‘λ˜μ–΄ μžˆμ–΄μ•Ό ν•˜μ§€ μ•Šμ„κΉŒμš”?

이 경우 APIκ°€ 잘λͺ»λ˜μ—ˆλ‹€λŠ” λ§μž…λ‹ˆκΉŒ? λ¬Έμ„œμ— κΈ°λ‘λ˜μ–΄ μžˆμ–΄μ•Ό ν•˜μ§€ μ•Šμ„κΉŒμš”?

REST APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 λ³€κ²½ μž‘μ—…μ„ μˆ˜ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

-=> 우리의 λͺ©ν‘œλŠ” UIλ₯Ό 톡해 μ»€λ²„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ 이것은 UIλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” μž‘μ€ λ―Έλ‹ˆ ν•˜μš°νˆ¬/ν•΄κ²° 방법 λ‹¨μœ„μž…λ‹ˆλ‹€.

우리의 λͺ©ν‘œλŠ” UIλ₯Ό 톡해 그것을 μ»€λ²„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ 이것은 UIλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” μž‘μ€ λ―Έλ‹ˆ ν•˜μš°νˆ¬/ν•΄κ²° 방법 λ‹¨μœ„μž…λ‹ˆλ‹€.

이 UI κ°œμ„  사항에 λŒ€ν•΄ +1

이 UI κ°œμ„  사항에 λŒ€ν•΄ +1

APIλ₯Ό 톡해 μƒˆλ‘œ μƒμ„±λœ μƒνƒœμ— μ•‘μ„ΈμŠ€ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?
검색어 검색 μƒνƒœ: newone ?

λ‚˜λŠ” 2개의 μƒνƒœλ₯Ό 더 λ§Œλ“€μ—ˆκ³  그듀은 잘 μž‘λ™ν•˜μ§€λ§Œ API μ•‘μ„ΈμŠ€κ°€ ν•„μš”ν•©λ‹ˆλ‹€

@skibson APIλ₯Ό 톡해 이 변경을 μ‹œλ„ν•˜λ©΄ λ‹€μŒ 응닡이 λ°˜ν™˜λ©λ‹ˆλ‹€.

"였λ₯˜": "속성을 νŽΈμ§‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€!"

두 번째 λ˜λŠ” μ„Έ 번째 μƒνƒœλ₯Ό ν‘œμ‹œν•˜λ €λ©΄ 무엇을 λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆκΉŒ?
λ ˆμΌμ„ 톡해 μΆ”κ°€ν•œ 첫 번째 μƒνƒœμ—μ„œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€.

NVM이 Zammadλ₯Ό λ‹€μ‹œ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μƒνƒœκ°€ "보λ₯˜ 쀑인 μ•Œλ¦Ό"처럼 μž‘λ™ν•˜λ„λ‘ ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? μƒνƒœμ™€ κ΄€λ ¨λœ λ‚ μ§œλ₯Ό μΆ”κ°€ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μƒνƒœ μœ ν˜•μ„ "미리 μ•Œλ¦Ό 보λ₯˜ 쀑"κ³Ό λ™μΌν•œ μœ ν˜•μœΌλ‘œ μ„€μ •ν•˜λ©΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@λ§ˆν‹°λ‹ˆ

κ·€ν•˜μ˜ 단계λ₯Ό λ”°λžμ„ λ•Œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

SyntaxError: (irb):11: syntax error, unexpected tIDENTIFIER, expecting ')' name: 'state_id',

이유λ₯Ό μ•Œκ² μ–΄μš”?
μ €λŠ” μžλ§€λ“œ 2.3을 μ“°κ³  μžˆμŠ΅λ‹ˆλ‹€.
감사 ν•΄μš”!

@AchuM λ§ˆμ§€λ§‰ λ‹«λŠ” ")" κ΄„ν˜Έλ₯Ό μžŠμ–΄λ²„λ Έμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ν™•μΈν•΄λ³΄μ„Έμš”. 😊

μ•ˆλ…•ν•˜μ„Έμš” @AchuM - μ½˜μ†”μ— μ½˜ν…μΈ λ₯Ό λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£λŠ” λ™μ•ˆ λ¬Έμ œκ°€ λ°œμƒν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚΄μš©μ„ $ZAMMAD_DIR/add_state.rb 와 같은 $ZAMMAD_DIR의 νŒŒμΌμ— λΆ™μ—¬λ„£κ³  $ZAMMAD_DIRμ—μ„œ rails r add_state.rb λ₯Ό 톡해 μ‹€ν–‰ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

name: 'state_id', 쀄 μ•žμ— μ‰Όν‘œλ₯Ό λ†“μΉœ 것 κ°™μŠ΅λ‹ˆλ‹€.

λ„€! ) λŠ” λ‚΄ μ‹€μˆ˜ πŸ™ˆ

@thorsteneckel μ•„μ£Ό 쒋은 νŒμž…λ‹ˆλ‹€, κ°μ‚¬ν•©λ‹ˆλ‹€! UIλ₯Ό 톡해 이것을 κ°€μ§ˆ λ•ŒκΉŒμ§€ κ·Έλ ‡κ²Œ ν•  κ²ƒμž…λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€!

@martini @thorsteneckel 고객의 μƒνƒœ 선택을 μ™„μ „νžˆ λΉ„ν™œμ„±ν™”ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? 감사 ν•΄μš”!

@martini μ΄λŸ¬ν•œ 레일 μ…Έ λͺ…령을 μˆœμˆ˜ν•œ Elasticsearch API 호좜둜 μ–΄λ–»κ²Œ λ³€ν™˜ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
/opt/zammad/bin/rails cλ₯Ό ν˜ΈμΆœν•˜λŠ” DEB νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λ©΄ 쒅속성 였λ₯˜κ°€ λ°˜ν™˜λ˜κ³  Ruby에 μ΅μˆ™ν•˜μ§€ μ•Šμ•„ μƒˆ μƒνƒœλ₯Ό μΆ”κ°€ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

@gualican https://docs.zammad.org/en/latest/admin-console.html λ³΄μ…¨λ‚˜μš”? λ¬Έμ•ˆ 인사

@martini μƒνƒœμ— λŒ€ν•œ UIλ₯Ό μ–Έμ œ μ‚¬μš©ν•  수 μžˆλŠ”μ§€ μ•„μ‹­λ‹ˆκΉŒ? μš°λ¦¬λŠ” λ˜ν•œ μƒνƒœμ˜ 색상을 μ„€μ •ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ ν•΄λ‹Ή μ‚¬μš©μžκ°€ ν‹°μΌ“ μƒνƒœλ₯Ό λ³€κ²½ν•  수 μ—†κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. 그듀은 μ’…μ’… 잘λͺ»λœ 것을 μ„ νƒν•˜λŠ”λ°, 였직 μ—μ΄μ „νŠΈλ§Œμ΄ 그것을 ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

이 κΈ°λŠ₯도 +1ν•©λ‹ˆλ‹€.

이 κΈ°λŠ₯에 λŒ€ν•΄ +1

+1

이 λ¬Έμ œλŠ” 과거에 μœ μš©ν•œ λŒ“κΈ€μ΄ μ—†κ³  +1만 λ°›μ•˜μœΌλ―€λ‘œ μ§€κΈˆμ€ λŒ€ν™”λ₯Ό μž κΈ‰λ‹ˆλ‹€.

기술적으둜 #1525의 λ³΅μ œλ³Έμ΄λ―€λ‘œ 이 문제λ₯Ό λ‹«κ² μŠ΅λ‹ˆλ‹€. λ¬Έμ„œμ—μ„œ #1525λ₯Ό ν•΄κ²°ν•  λ•ŒκΉŒμ§€ Zammad Rails μ½˜μ†”μ„ 톡해 이미 μƒνƒœλ₯Ό μΆ”κ°€ν•  수 μžˆλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. μ§€κΈˆ λ‹«μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰