сервис техподдержки, многократно унаследованный. Херувим - ангел, а сотрудникам ТП нужно ангельское терпение
Go to file
2022-04-14 20:43:13 +03:00
app -- 2022-04-14 20:43:13 +03:00
dal -- 2022-04-14 20:43:13 +03:00
jwt_adapter fix some sseerrors 2021-05-15 23:10:07 +03:00
k8s lil commit 2022-02-27 18:27:44 +03:00
middleware lil commit 2022-02-27 18:27:44 +03:00
model lil commit 2022-02-27 18:27:44 +03:00
ops -- 2022-04-14 20:43:13 +03:00
router -- 2021-05-15 17:03:46 +03:00
service -- 2022-04-14 20:43:13 +03:00
test add support for message delivering 2021-05-03 01:25:12 +03:00
tools lil commit 2022-02-27 18:27:44 +03:00
version nutshell 2021-04-10 21:46:51 +03:00
.gitignore nutshell 2021-04-10 21:46:51 +03:00
Dockerfile -- 2022-04-14 20:43:13 +03:00
DockerfileStaging -- 2022-04-14 20:43:13 +03:00
go.mod -- 2022-04-14 20:43:13 +03:00
go.sum add file storing 2021-09-05 18:24:13 +03:00
main.go add file storing 2021-09-05 18:24:13 +03:00
Makefile deployment 2021-05-11 20:23:13 +03:00
prod.crt lil commit 2022-02-27 18:27:44 +03:00
prod.key lil commit 2022-02-27 18:27:44 +03:00
README.md README.md edited online with Bitbucket 2021-06-09 17:14:24 +00:00
server.crt lil commit 2022-02-27 18:27:44 +03:00
server.key lil commit 2022-02-27 18:27:44 +03:00

Heruvym

/create - метод для создания тикета. пример запроса

POST https://staging.blacbroc.com/support/create

Тело запроса

{"Title":"test ticket title","Message":"test ticket message"}

тело ответа

{"Ticket":"c2fekjcobibtq7akknog"}

/subscribe - sse метод для подписывания на изменения по всех тикетах доступных пользователю.

пример запроса https://staging.blacbrok.com/support/subscribe?Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6ImMxdmNrZWtvYmlicmFmYWU2bjYwIiwiU2Vzc2lvbiI6ImMxdmNrZWtvYmlicmFmYWU2bjZnIiwiVXNlciI6ImMxdXAxY2tvYmliaXVpNDVxNGYwIiwiVGFyaWZmIjowLCJDcmVhdGVkIjoxNjE4OTIyMDQyMDQ3LCJMYXN0U2VlbiI6MTYxODkyMjA5OTg5MH0.INLy790JP-o6DDZcXfSEXUDg7lE1_83Ns2vDJVrUFuQ

тело ответа

Ticket: {
    ID         string `bson:"_id"`
    UserID     string `bson:"UserID"`
    SessionID  string `bson:"SessionID"`
    AnswererID string `bson:"AnswererID"`
    State      string  `bson:"State"`
    TopMessage: {
                    ID        string `bson:"_id" json:"id"`
                    TicketID  string `bson:"TicketID" json:"ticket_id"`
                    UserID    string `bson:"UserID" json:"user_id"`
                    SessionID string `bson:"SessionID" json:"session_id"`
                    Message string         `bson:"Message" json:"message"`
                    Files   []string       `bson:"Files" json:"files"`
                    Shown   map[string]int `bson:"Shown" json:"shown"`
                    CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
                }
    Title string `bson:"Title"`
    CreatedAt time.Time `bson:"CreatedAt"`
    UpdatedAt time.Time `bson:"UpdatedAt"`
    Rate int `bson:"Rate"`
}

/ticket - sse метод для подписки на сообщения из одного тикета.

пример запроса https://staging.blacbrok.com/support/ticket?ticket=c2fekjcobibtq7akknog&Authorization=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJRCI6ImMxdmNrZWtvYmlicmFmYWU2bjYwIiwiU2Vzc2lvbiI6ImMxdmNrZWtvYmlicmFmYWU2bjZnIiwiVXNlciI6ImMxdXAxY2tvYmliaXVpNDVxNGYwIiwiVGFyaWZmIjowLCJDcmVhdGVkIjoxNjE4OTIyMDQyMDQ3LCJMYXN0U2VlbiI6MTYxODkyMjA5OTg5MH0.INLy790JP-o6DDZcXfSEXUDg7lE1_83Ns2vDJVrUFuQ

тело ответа

{
    ID        string `bson:"_id" json:"id"`
    TicketID  string `bson:"TicketID" json:"ticket_id"`
    UserID    string `bson:"UserID" json:"user_id"`
    SessionID string `bson:"SessionID" json:"session_id"`
    Message string         `bson:"Message" json:"message"`
    Files   []string       `bson:"Files" json:"files"`
    Shown   map[string]int `bson:"Shown" json:"shown"`
    CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
}

/send - метод для отправки сообщения в тикета

пример запроса POST https://staging.blacbroc.com/support/send

Тело запроса

{"message":"test ticket message","TicketID":"c2fekjcobibtq7akknog", "lang":"ru","files": ["idoffile"]}

Ответ null

/getTickets - метод для получения тикетов с пагинацией

пример запроса POST https://staging.blacbroc.com/support/getTickets

Тело запроса:

{"amt":10,"page":1,"srch":"test","status":"open"}

Ответ:

  ID         string `bson:"_id"`
  UserID     string `bson:"UserID"`
  SessionID  string `bson:"SessionID"`
  AnswererID string `bson:"AnswererID"`
  State      string  `bson:"State"`
  TopMessage: {
      ID        string `bson:"_id" json:"id"`
      TicketID  string `bson:"TicketID" json:"ticket_id"`
      UserID    string `bson:"UserID" json:"user_id"`
      SessionID string `bson:"SessionID" json:"session_id"`
      Message string         `bson:"Message" json:"message"`
      Files   []string       `bson:"Files" json:"files"`
      Shown   map[string]int `bson:"Shown" json:"shown"`
      CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
  }
  Title string `bson:"Title"`
  CreatedAt time.Time `bson:"CreatedAt"`
  UpdatedAt time.Time `bson:"UpdatedAt"`
  Rate int `bson:"Rate"`
}]

/getMessages - метод для получения сообщений конкретного тикета с пагинацией

пример запроса POST https://staging.blacbroc.com/support/getMessages

Тело запроса:

{"amt":10,"page":1,"srch":"test","ticket":"c2fekjcobibtq7akknog"}

Ответ:
[{
   ID        string `bson:"_id" json:"id"`
   TicketID  string `bson:"TicketID" json:"ticket_id"`
   UserID    string `bson:"UserID" json:"user_id"`
   SessionID string `bson:"SessionID" json:"session_id"`

   Message string         `bson:"Message" json:"message"`
   Files   []string       `bson:"Files" json:"files"`
   Shown   map[string]int `bson:"Shown" json:"shown"`

   CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
}]

/pick - подхватывание сотрудником диалога

пример запроса POST https://staging.blacbroc.com/support/pick

Тело запроса: {"ticket":"c2fekjcobibtq7akknog"}

Ответ: null

/delegate - передача тикета другому сотруднику

пример запроса POST https://staging.blacbroc.com/support/delegate

Тело запроса: {"ticket":"c2fekjcobibtq7akknog","answerer":"c2fekjcobibtq7akknog"}

Ответ: null

/vote - метод для оценки полезности ответа

пример запроса POST https://staging.blacbroc.com/support/delegate

Тело запроса: {"ticket":"c2fekjcobibtq7akknog","rate":5}

Ответ: null

/close - метод для закрытия тикета

пример запроса POST https://staging.blacbroc.com/support/close

Тело запроса: {"ticket":"c2fekjcobibtq7akknog"}

Ответ: null