获取服务台工单详情和工单列表接口报错

Offen
#91 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Anfängerfreundlichkeit
50/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
api

Rechercherichtung

Beginne mit lark_oapi/api/helpdesk/v1/model/ticket.py und vergleiche das Ticket-Modell mit der Feishu Helpdesk-Dokumentation zur Ticket-Liste. Überprüfe die tatsächliche Struktur der Comments-Antwort und die Annotationen des Ticket-Konstruktors und -Builders. Die Aufgabe ist abgeschlossen, wenn ticket-list- und ticket-detail-Antworten Comments als Liste von Comments-Objekten ohne Fehler deserialisieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

https://open.feishu.cn/document/server-docs/helpdesk-v1/ticket-management/ticket/list 接口中定义的comments是一个对象,实际上接口返回的comments是一个列表,

将Ticket对象的commens改成列表即可修复:

代码文件路径为lark_oapi/api/helpdesk/v1/model/ticket.py

# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init
from .ticket_user import TicketUser
from .comments import Comments
from .i18n import I18n
from .ticket_user import TicketUser
from .ticket_user import TicketUser
from .ticket_user import TicketUser
from .customized_field_display_item import CustomizedFieldDisplayItem
from .ticket_user import TicketUser


class Ticket(object):
    _types = {
        "ticket_id": str,
        "helpdesk_id": str,
        "guest": TicketUser,
        "comments": List[Comments],
        "ticket_type": int,
        "status": int,
        "score": int,
        "created_at": int,
        "updated_at": int,
        "closed_at": int,
        "dissatisfaction_reason": I18n,
        "agents": List[TicketUser],
        "channel": int,
        "solve": int,
        "closed_by": TicketUser,
        "collaborators": List[TicketUser],
        "customized_fields": List[CustomizedFieldDisplayItem],
        "agent_service_duration": float,
        "agent_first_response_duration": int,
        "bot_service_duration": int,
        "agent_resolution_time": int,
        "actual_processing_time": int,
        "agent_entry_time": int,
        "agent_first_response_time": int,
        "agent_last_response_time": int,
        "agent_owner": TicketUser,
    }

    def __init__(self, d=None):
        self.ticket_id: Optional[str] = None
        self.helpdesk_id: Optional[str] = None
        self.guest: Optional[TicketUser] = None
        self.comments: Optional[List[Comments]] = None
        self.ticket_type: Optional[int] = None
        self.status: Optional[int] = None
        self.score: Optional[int] = None
        self.created_at: Optional[int] = None
        self.updated_at: Optional[int] = None
        self.closed_at: Optional[int] = None
        self.dissatisfaction_reason: Optional[I18n] = None
        self.agents: Optional[List[TicketUser]] = None
        self.channel: Optional[int] = None
        self.solve: Optional[int] = None
        self.closed_by: Optional[TicketUser] = None
        self.collaborators: Optional[List[TicketUser]] = None
        self.customized_fields: Optional[List[CustomizedFieldDisplayItem]] = None
        self.agent_service_duration: Optional[float] = None
        self.agent_first_response_duration: Optional[int] = None
        self.bot_service_duration: Optional[int] = None
        self.agent_resolution_time: Optional[int] = None
        self.actual_processing_time: Optional[int] = None
        self.agent_entry_time: Optional[int] = None
        self.agent_first_response_time: Optional[int] = None
        self.agent_last_response_time: Optional[int] = None
        self.agent_owner: Optional[TicketUser] = None
        init(self, d, self._types)

    @staticmethod
    def builder() -> "TicketBuilder":
        return TicketBuilder()


class TicketBuilder(object):
    def __init__(self) -> None:
        self._ticket = Ticket()
    def ticket_id(self, ticket_id: str) -> "TicketBuilder":
        self._ticket.ticket_id = ticket_id
        return self
    def helpdesk_id(self, helpdesk_id: str) -> "TicketBuilder":
        self._ticket.helpdesk_id = helpdesk_id
        return self
    def guest(self, guest: TicketUser) -> "TicketBuilder":
        self._ticket.guest = guest
        return self
    def comments(self, comments: List[Comments]) -> "TicketBuilder":
        self._ticket.comments = comments
        return self
    def ticket_type(self, ticket_type: int) -> "TicketBuilder":
        self._ticket.ticket_type = ticket_type
        return self
    def status(self, status: int) -> "TicketBuilder":
        self._ticket.status = status
        return self
    def score(self, score: int) -> "TicketBuilder":
        self._ticket.score = score
        return self
    def created_at(self, created_at: int) -> "TicketBuilder":
        self._ticket.created_at = created_at
        return self
    def updated_at(self, updated_at: int) -> "TicketBuilder":
        self._ticket.updated_at = updated_at
        return self
    def closed_at(self, closed_at: int) -> "TicketBuilder":
        self._ticket.closed_at = closed_at
        return self
    def dissatisfaction_reason(self, dissatisfaction_reason: I18n) -> "TicketBuilder":
        self._ticket.dissatisfaction_reason = dissatisfaction_reason
        return self
    def agents(self, agents: List[TicketUser]) -> "TicketBuilder":
        self._ticket.agents = agents
        return self
    def channel(self, channel: int) -> "TicketBuilder":
        self._ticket.channel = channel
        return self
    def solve(self, solve: int) -> "TicketBuilder":
        self._ticket.solve = solve
        return self
    def closed_by(self, closed_by: TicketUser) -> "TicketBuilder":
        self._ticket.closed_by = closed_by
        return self
    def collaborators(self, collaborators: List[TicketUser]) -> "TicketBuilder":
        self._ticket.collaborators = collaborators
        return self
    def customized_fields(self, customized_fields: List[CustomizedFieldDisplayItem]) -> "TicketBuilder":
        self._ticket.customized_fields = customized_fields
        return self
    def agent_service_duration(self, agent_service_duration: float) -> "TicketBuilder":
        self._ticket.agent_service_duration = agent_service_duration
        return self
    def agent_first_response_duration(self, agent_first_response_duration: int) -> "TicketBuilder":
        self._ticket.agent_first_response_duration = agent_first_response_duration
        return self
    def bot_service_duration(self, bot_service_duration: int) -> "TicketBuilder":
        self._ticket.bot_service_duration = bot_service_duration
        return self
    def agent_resolution_time(self, agent_resolution_time: int) -> "TicketBuilder":
        self._ticket.agent_resolution_time = agent_resolution_time
        return self
    def actual_processing_time(self, actual_processing_time: int) -> "TicketBuilder":
        self._ticket.actual_processing_time = actual_processing_time
        return self
    def agent_entry_time(self, agent_entry_time: int) -> "TicketBuilder":
        self._ticket.agent_entry_time = agent_entry_time
        return self
    def agent_first_response_time(self, agent_first_response_time: int) -> "TicketBuilder":
        self._ticket.agent_first_response_time = agent_first_response_time
        return self
    def agent_last_response_time(self, agent_last_response_time: int) -> "TicketBuilder":
        self._ticket.agent_last_response_time = agent_last_response_time
        return self
    def agent_owner(self, agent_owner: TicketUser) -> "TicketBuilder":
        self._ticket.agent_owner = agent_owner
        return self

    def build(self) -> "Ticket":
        return self._ticket

Vorherrschende Sprache
Python
Sterne
559
Forks
102
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus larksuite/oapi-sdk-python

Alle Issues in larksuite/oapi-sdk-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.