use WechatWorkExternalContactBundle\Request\GetExternalContactRequest;
use WechatWorkBundle\Service\WorkService;
// Get external contact details
$request = new GetExternalContactRequest();
$request->setExternalUserId('external_user_id');
$request->setCursor('optional_cursor');
$response = $workService->request($agent, $request);
use WechatWorkExternalContactBundle\Entity\ExternalUser;
$externalUser = new ExternalUser();
$externalUser->setExternalUserId('wm_xxx');
$externalUser->setName('Customer Name');
$externalUser->setType(1); // 1: WeChat user, 2: Enterprise WeChat user
use WechatWorkExternalContactBundle\Entity\ExternalServiceRelation;
$relation = new ExternalServiceRelation();
$relation->setCorp($corp);
$relation->setUser($user);
$relation->setExternalUser($externalUser);
$relation->setAddExternalContactTime(new \DateTimeImmutable());
use WechatWorkExternalContactBundle\Event\GetExternalUserDetailEvent;
// Listen to the event
class ExternalUserListener
{
public function onGetExternalUserDetail(GetExternalUserDetailEvent $event)
{
$externalUser = $event->getExternalUser();
$corpId = $event->getCorpId();
// Process external user data
}
}
use WechatWorkExternalContactBundle\Request\SendWelcomeMessageRequest;
use WechatWorkExternalContactBundle\Request\Attachment\Image;
use WechatWorkExternalContactBundle\Request\Attachment\Link;
$request = new SendWelcomeMessageRequest();
$request->setWelcomeCode('WELCOME_CODE_FROM_WEBHOOK');
$request->setText('Welcome to our service!');
// Add image attachment
$image = new Image();
$image->setMediaId('MEDIA_ID');
$request->addAttachment($image);
// Add link attachment
$link = new Link();
$link->setTitle('Learn More');
$link->setUrl('https://example.com');
$link->setPicUrl('https://example.com/image.jpg');
$link->setDesc('Click to learn more about our services');
$request->addAttachment($link);
$response = $workService->request($agent, $request);
use WechatWorkServerBundle\Event\WechatWorkServerMessageRequestEvent;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
#[AsEventListener]
class CustomExternalContactListener
{
public function onServerMessageRequest(WechatWorkServerMessageRequestEvent $event): void
{
$message = $event->getMessage()->getRawData();
if (!isset($message['ExternalUserID'])) {
return;
}
// Custom processing logic
$this->processExternalContact($message);
}
private function processExternalContact(array $message): void
{
// Your custom logic here
}
}
use WechatWorkExternalContactBundle\Entity\ExternalUser;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class CustomExternalUser extends ExternalUser
{
#[ORM\Column(type: 'string', nullable: true)]
private ?string $customField = null;
public function getCustomField(): ?string
{
return $this->customField;
}
public function setCustomField(?string $customField): self
{
$this->customField = $customField;
return $this;
}
}
use WechatWorkExternalContactBundle\Command\SyncExternalContactListCommand;
class CustomSyncCommand extends SyncExternalContactListCommand
{
protected function configure(): void
{
parent::configure();
$this->setName('app:custom-sync-external-contacts');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
// Pre-processing
$this->customPreProcessing();
// Run original sync
$result = parent::execute($input, $output);
// Post-processing
$this->customPostProcessing();
return $result;
}
}
use WechatWorkServerBundle\Event\WechatWorkServerMessageRequestEvent;
public function onServerMessage(WechatWorkServerMessageRequestEvent $event): void
{
$message = $event->getMessage();
$rawData = $message->getRawData();
// Handle different event types
match ($rawData['ChangeType'] ?? null) {
'add_external_contact' => $this->handleAddContact($rawData),
'del_external_contact' => $this->handleDeleteContact($rawData),
'add_half_external_contact' => $this->handleHalfContact($rawData),
default => null,
};
}
use WechatWorkExternalContactBundle\Entity\ExternalUser;
$externalUser = new ExternalUser();
$externalUser->setNickname('Customer Name');
$externalUser->setExternalUserId('wm_external_123');
$externalUser->setAvatar('https://example.com/avatar.jpg');
$externalUser->setGender(1); // 1=male, 2=female, 0=unknown
use WechatWorkExternalContactBundle\Entity\ExternalServiceRelation;
$relation = new ExternalServiceRelation();
$relation->setUser($internalUser);
$relation->setExternalUser($externalUser);
$relation->setAddExternalContactTime(new \DateTimeImmutable());