невозможно добавить / перечислить весь журнал событий на watson assistant wrokspace

Помогите, пожалуйста, я пытался вызвать конечную точку помощника watson https://gateway.watsonplatform.net/assistant/api/v1/workspaces/myworkspace/logs?version=2018-09-20, чтобы получить весь список событий.

и отфильтруйте по диапазону дат, используя эти параметры

var param =
{ workspace_id: '{myworkspace}',
page_limit: 100000,
filter: 'response_timestamp%3C2018-17-12,response_timestamp%3E2019-01-01'}

видимо, я получил пустой ответ ниже.

{
"logs": [],
"pagination": {}
} 

person Afeez Olawale    schedule 16.01.2019    source источник


Ответы (2)


Пара вещей, которые нужно проверить.

1. У вас есть 2018-17-12, который является метрической датой. Это переводится как «12-й день 17-го месяца 2018 года».

2. Предполагая, что дата должна быть действительной, в вашем поиске будет указано «Документы, выпущенные до 17 декабря 2018 г. и после 1 января 2019 г.». Которая не вернет никаких документов.

3. Журналы создаются только при вызове метода message () через API. Поэтому проверьте свою страницу журналов в инструментах, чтобы увидеть, есть ли у вас журналы.

4. Если у вас облегченная учетная запись, журналы хранятся только 7 дней, а затем удаляются. Чтобы журналы сохранялись дольше, вам необходимо перейти на стандартную учетную запись.

Хотя это не имеет прямого отношения к вашей проблеме, имейте в виду, что page_limit имеет жестко заданный верхний предел (IIRC 200–300?). Таким образом, вы можете запросить 100 000 записей, но он вам их не даст.


Это образец кода Python (не поддерживается), который использует разбиение на страницы для чтения журналов:

from watson_developer_cloud import AssistantV1

username = '...'
password = '...'
workspace_id = '....'
url = '...'
version = '2018-09-20'

c = AssistantV1(url=url, version=version, username=username, password=password)

totalpages = 999
pagelimit = 200
logs = []
page_count = 1
cursor = None
count = 0

x = { 'pagination': 'DUMMY' }
while x['pagination']:
    if page_count > totalpages: 
        break

    print('Reading page {}. '.format(page_count), end='')
    x = c.list_logs(workspace_id=workspace_id,cursor=cursor,page_limit=pagelimit)
    if x is None: break

    print('Status: {}'.format(x.get_status_code()))
    x = x.get_result()

    logs.append(x['logs'])
    count = count + len(x['logs'])

    page_count = page_count + 1

    if 'pagination' in x and 'next_url' in x['pagination']:
        p = x['pagination']['next_url']
        u = urlparse(p)
        query = parse_qs(u.query)
        cursor = query['cursor'][0]

Ваш logs объект должен содержать журналы.

person Simon O'Doherty    schedule 16.01.2019
comment
спасибо @Simon Теперь я смог сгенерировать журнал, но содержимое файла журнала заполнено наполовину. Итак, как переопределить жесткое ограничение fcoded, чтобы иметь возможность извлечь полный журнал. - person Afeez Olawale; 17.01.2019
comment
он наполовину заполнен, так как использует разбиение по страницам. Вы должны тянуть каждую страницу. Невозможно отменить ограничение. - person Simon O'Doherty; 17.01.2019
comment
Пожалуйста, я немного запутался, вы имеете в виду, что мне придется вытаскивать каждую страницу вручную или могу помочь с фрагментом, чтобы вытащить каждую страницу - person Afeez Olawale; 17.01.2019
comment
Когда вы делаете первый вызов, появляется поле pagination, в котором будет указан URL-адрес следующей страницы. У меня есть образец кода, но мне нужно посмотреть, смогу ли я его выпустить. - person Simon O'Doherty; 17.01.2019
comment
Хорошо, Саймон, я буду очень признателен, если вы предоставите мне образец кода. - person Afeez Olawale; 18.01.2019
comment
Существует SDK для узла для Watson с примерами. github.com/watson-developer-cloud/node-sdk - person Simon O'Doherty; 23.01.2019

Я считаю, что ограничение составляет 500, а затем мы возвращаем URL-адрес разбиения на страницы, чтобы вы могли получить следующие 500. Я не думаю, что это проблема, но как только вы начнете получать журналы обратно, полезно знать

person Mitch    schedule 16.01.2019