2014-09-04 1 views
-1

Я пытаюсь интегрировать фабрикатор с jabber chat. Я создал бота, который отправляет сообщения автору сообщения в jabber chat для каждого нового запроса фида. Мое требование состоит в том, что как получить оригинального автора фиксации, если история фида - это проблема, аудит или commnet. Я хочу уведомить автора о совершении каких-либо проблем, связанных с его совершением. Нужно ли мне анализировать историю, чтобы получить эту информацию? Как мне это сделать?phabricator получить фиксацию автора из истории корма для рассказов, которые относятся к проблемам, комментариям и аудитам

Заранее спасибо

+0

downvoter пожалуйста, скажите мне, что случилось с вопросом , –

ответ

2

Истории объект должен иметь элемент данных, который будет включать в себя информацию об авторе и коммиттере. Как так:

"PHID-STRY-spjfpdv4wuigblmh3ygb" : { 
    "class"   : "PhabricatorFeedStoryCommit", 
    "epoch"   : 1409840112, 
    "authorPHID"  : "PHID-USER-tcyihgi43sw6o7yrnhu5", 
    "chronologicalKey" : "6055220066741547443", 
    "data"    : { 
     "commitPHID" : "PHID-CMIT-ievqiimtsnlfhlk5imqq", 
     "summary"  : "[blah]", 
     "authorName" : "Author Name <[email protected]>", 
     "authorPHID" : "PHID-USER-tcyihgi43sw6o7yrnhu5", 
     "committerName" : "Commiter Name <[email protected]>", 
     "committerPHID" : "PHID-USER-tcyihgi43sw6o7yrnhu5" 
    } 
} 

Если нет, то он должен иметь objectPHID:

"PHID-STRY-mqlkjzwkbr3th4h5n2eg" : { 
    "class"   : "PhabricatorApplicationTransactionFeedStory", 
    "epoch"   : 1409841382, 
    "authorPHID"  : "PHID-USER-2bubef6xonwicvaool4w", 
    "chronologicalKey" : "6055222630292077307", 
    "data"    : { 
     "objectPHID"  : "PHID-CMIT-is7pmo5nyvv4eruq2msn", 
     "transactionPHIDs" : [ 
      "PHID-XACT-CMIT-svvkzf7dfplzdxp" 
     ] 
    } 
} 

Вы можете запросить оттуда, используя канал вызовов.

0

Я запросил feed.query. и извлекли authorPHID и objectPHID, если они имеются. С objectPHID я запросил differnetial.query метод кабелепровода, чтобы узнать reviewers и ccs. ccs - это массив пользователей, которым необходимо получить кусок сообщения. Затем я использовал метод кабельного ввода для извлечения имен пользователей и сопоставил их с jabber именами пользователей и отправил сообщения.

2

Лучший способ понять и проверить это следующим http://phabricator.yourhost.com/conduit/method/feed.query/
нажмите [вызов метода]
Это будет возвращать список изменений, которые вы будете заинтересованы в: «objectPHID»: «PHID-древ-XXXXXXX "
...
Теперь http://phabricator.yourhost.com/conduit/method/differential.query/
набор phids => [ "PHID-ДРЕВ-ххххххх"]
...
Это будет возвращать "authorPHID": "PHID-USER-ххххх", и" рецензентов ": [" xxxx "," xxxx "," xxxx "]
...
Я также предлагаю обзор /src/infrastructure/daemon/bot/handler/PhabricatorBotFeedNotificationHandler.php

Теперь код

$stories = $this->getConduit()->callMethodSynchronous(
    'feed.query', 
    array(
     'limit' => $config_page_size, 
     'after' => $chrono_key_cursor, 
     'view' => 'text', 
    ) 
); 

foreach ($stories as $story) { 
    $objects = $this->getConduit()->callMethodSynchronous(
     'phid.lookup', 
     array(
      'names' => array($story['objectPHID']), 
     ) 
    ); 

    $diff_query_results = $this->getConduit()->callMethodSynchronous(
     'differential.query', 
     array(
      'phids' => array($story['objectPHID']), 
    )); 

    foreach ($diff_query_results as $diff_query) { 
     $authorResults = $this->getConduit()->callMethodSynchronous(
     'phid.lookup', 
     array(
      'names' => array($diff_query['authorPHID']), 
     ) 
    ); 

    $message .= ' '.$objects[$story['objectPHID']]['uri']; 
    foreach ($authorResults as $author) { 
     $authorName = $author['name']; 
     print_r ($authorName); 
    } 

    $reviewersResults = $this->getConduit()->callMethodSynchronous(
     'phid.lookup', 
     array(
      'names' => $diff_query['reviewers'], 
     ) 
    ); 


    foreach ($reviewersResults as $reviewer) { 
     $reviewerName = $reviewer['name']; 
     print_r ($reviewerName); 
    } 
} 
Смежные вопросы