Интеграция Canny для сбора запросов на функции
Canny — платформа для сбора и приоритизации фичереквестов от пользователей. Встраивается в продукт через SDK, позволяет авторизованным пользователям создавать запросы, голосовать и подписываться на обновления.
SSO-интеграция с вашим продуктом
Canny поддерживает SSO через JWT, чтобы пользователи не создавали отдельный аккаунт:
// CannyTokenController
public function generate(): JsonResponse
{
$user = auth()->user();
$userData = [
'avatarURL' => $user->avatar_url,
'email' => $user->email,
'id' => (string) $user->id,
'name' => $user->name,
// Опционально: companies для B2B сегментации
'companies' => [[
'id' => (string) $user->company_id,
'name' => $user->company->name,
]],
];
$token = \Firebase\JWT\JWT::encode(
['userData' => $userData],
config('services.canny.private_key'),
'HS256'
);
return response()->json(['token' => $token]);
}
Встраивание виджета
// В React-компоненте
useEffect(() => {
// Загрузка Canny SDK
(function(w, d, i, s) {
// ... Canny SDK loader
})(window, document, 'Canny', 'https://cdn.canny.io/sdk.js');
const initCanny = async () => {
const { token } = await fetch('/api/canny-token').then(r => r.json());
window.Canny('identify', {
appID: process.env.NEXT_PUBLIC_CANNY_APP_ID,
user: { ssoToken: token },
});
window.Canny('render', {
boardToken: 'YOUR_BOARD_TOKEN',
basePath: '/feedback',
ssoToken: token,
});
};
initCanny();
}, []);
Webhook для уведомлений
Canny отправляет вебхуки при изменении статуса запроса:
Route::post('/webhooks/canny', function (Request $request) {
// Верификация подписи
$signature = hash_hmac('sha256', $request->getContent(), config('services.canny.webhook_secret'));
if (!hash_equals($signature, $request->header('Canny-Signature'))) abort(401);
$event = $request->json('type');
$post = $request->json('object');
if ($event === 'post.statusChanged' && $post['status'] === 'complete') {
// Уведомляем всех проголосовавших по email
// Canny делает это автоматически, но можно добавить собственную логику
Log::info("Canny feature completed: {$post['title']}");
}
return response('ok');
});
Сроки
Интеграция Canny с SSO и вебхуками: 1–2 рабочих дня.







