recsForPlacements
Descrição
Este endpoint devolve recomendações para um placement identificado pelo nome e regista o comportamento do shopper. As recomendações devolvidas pela API respeitam todas as regras de merchandising configuradas no dashboard do Algonomy Cloud.
URL
Produção
Note: Como parte da iniciativa da Personalization Cloud para evoluir para uma solução centrada na privacidade, a plataforma está a migrar para um domínio exclusivo de captura de dados chamado https://recs.algorecs.com para gerir as interações diretamente com os browsers.
Utilize este URL para solicitar personalização no ambiente de produção.
https://recs.algorecs.com/rrserver/api/rrPlatform/recsForPlacements
Integração
Utilize este URL para solicitar personalização no ambiente de QA, staging ou desenvolvimento. Desta forma, pode testar alterações (como regras de merchandising ou de estratégia) sem impactar o ambiente de produção.
https://integration.algorecs.com/rrserver/api/rrPlatform/recsForPlacements
Parâmetros
- Notes:
-
É necessário chamar apenas os parâmetros aplicáveis.
- O Algonomy opera com um conjunto de APIs que suportam múltiplas aplicações e clientes em simultâneo. O Algonomy pode atualizar e melhorar estas APIs a qualquer momento.
-
Todos os parâmetros são case-sensitive.
Este endpoint exige o tracking de eventos de clique.
Para mais informações sobre como registar eventos de clique, consulte Tracking Events.
|
Nome |
Obrigatório ou Opcional |
Descrição |
|---|---|---|
|
aari |
Opcional |
Itens já adicionados ao registo. Um único ID de produto (ou lista de IDs). Se existir mais do que um produto no registo, separe os IDs utilizando o carácter pipe '|'. Exemplo: aari=33306|909119|305466 |
|
apiClientKey |
Obrigatório |
Chave única específica de cada implementação da API. Identifica a aplicação ou cliente para efeitos de reporting, permissões e merchandising. Fornecida pelo Algonomy. Exemplo: apiClientKey=b0126f995ac848159d |
|
apiKey |
Obrigatório |
Chave única que identifica o site. Cada cliente Algonomy possui uma API key exclusiva para separar dados e tráfego de outros clientes. Fornecida pelo Algonomy. Exemplo: apiKey=4faeaf752ee40a0f |
|
atcid |
Obrigatório na página Add to Cart |
ID de add to cart. Pode ser um único ID de produto ou uma lista. Se for adicionado mais do que um produto ao carrinho, separe os IDs com o carácter pipe "|". Exemplo: atcid=uv2345|xt1234 |
|
attributeList |
Opcional |
Limita a informação de atributos devolvida no resultado à lista especificada. attributeList aceita uma lista de nomes de atributos separados por vírgula. Se estiver vazio ou for utilizado o carácter wildcard '*', devolve todos os atributos do produto. Exemplo: Se "attributeList=gender,color", devolve apenas os atributos gender e color. "attributeList=*" Devolve todos os atributos. "attributeList=" Devolve todos os atributos. Note: Se returnMinimalRecItemData estiver definido como true e attributeList também for especificado, a resposta inclui igualmente os atributos indicados. |
|
bi |
Opcional |
Lista de IDs de produto que não devem ser recomendados nesta resposta. Utilize o carácter pipe "|" para separar os IDs. Exemplo: bi=93874|04495|043945 |
|
categoryData |
Opcional |
Omite dados de categoria (categoryIds e categories) quando definido como false. O valor predefinido é true. Exemplo: categoryData=false Note: excludeAncestor=false pode ser utilizado para incluir dados de categorias ancestrais. |
|
categoryId |
Obrigatório em category_page |
ID da categoria que o comerciante pretende consultar. Deve corresponder ao ID externo fornecido ao Algonomy. Exemplo: categoryId=902312 |
|
chi |
Opcional |
Fornece category hint IDs. Os category hints podem ser adicionados a qualquer tipo de página e qualificam a página para regras de merchandising associadas à categoria. É possível adicionar múltiplos hints a uma única página. Separe os IDs com o carácter “|”. Exemplo com 2 hints: chi=1913000|1903094 |
|
count |
Opcional |
Número total de produtos a devolver na resposta. Este valor substitui o número definido no placement ou na configuração de Search and Browse. Valor máximo: 1000. Exemplo: count=30 Nota: Apenas para Search and Browse. Ao utilizar paginação, este parâmetro deve ser usado em conjunto com st. |
|
ctp |
Opcional |
Parâmetro de click-through. Permite adicionar parâmetros ao URL de clique. Consulte Click-through Parameters para mais informações. Exemplo: ctp=|0:origin=CJ|1:campaign=rr |
|
cts |
Opcional |
Click-through server. Altera parte do URL de clique quando o shopper clica numa recomendação, definindo o servidor de destino. Exemplo: cts=http://test.buystuff.com Note: Se fornecido no pedido, substitui a configuração de site ou o valor enviado no feed. |
|
currency |
Obrigatório em purchase_complete_page |
Código ISO da moeda para cada transação ou pedido de produto. Exemplo: currency=USD Note: Se não especificado, o valor predefinido é USD. |
|
cv |
Opcional |
Valor do carrinho. Utilizado em campanhas segmentadas por valor. Expresso em cêntimos. Exemplo: cv=9550 (equivale a 95,50) |
|
excludeAncestor |
Opcional |
True/False. Quando definido como false, a resposta inclui dados de categorias ancestrais no array ancestorCategories dentro do objeto "categories". Nota: Deve ser utilizado em conjunto com o parâmetro categoryData. Exemplo: excludeAncestor=false Exemplo de resposta JSON: Copy
|
|
excludeHtml |
Opcional |
True/false. Se definido como true, omite o HTML devolvido na resposta do servidor Algonomy. Se false, a resposta inclui o HTML do placement definido no campo html do layout. O valor predefinido é false. Exemplo: excludeHtml=true
|
|
excludeItemAttributes |
Opcional |
True/false. Se definido como true, remove os atributos do item dos dados dos produtos recomendados. O valor predefinido é false. Exemplo: excludeItemAttributes=true |
|
excludeRecItems |
Opcional |
True/false. Se definido como true, remove completamente a estrutura de itens recomendados. É útil quando o HTML é suficiente na resposta. O valor predefinido é false. Exemplo: excludeRecItems=true |
|
fdm |
Opcional |
Force Display Mode. True/false. Se definido como true, força a exibição. Por exemplo, em modo listen, devolve produtos ignorando o registo. Valores válidos: Para true: "t", "on", "yes", "true", "1", "y" Para false: "f", "off", "no", "false", "0", "n" |
|
filbr |
Opcional |
Filtrar por nome da marca. Por predefinição, exclui da recomendação os produtos da marca especificada. Consulte includeBrandFilteredProducts para alterar o comportamento predefinido. Para filtrar múltiplas marcas, utilize o carácter pipe "|". Exemplo: filbr=Microsoft|Logitech|Apple |
|
filcat |
Opcional |
Especifica a categoria a filtrar. filcat=<categoryId> Para filtrar com base numa categoria específica, deve ser indicado: "filcat=<categoryId>&filcatinc=true>" Podem ser enviados múltiplos category ids numa string delimitada por pipe. Cada categoria na string é avaliada com operador OR. |
|
filcatinc |
Opcional |
Filtra dentro da categoria (requer a especificação da categoria com 'filcat'). filcatinc=true: filtra os resultados para mostrar apenas produtos da categoria especificada. filcatinc=false: exclui dos resultados os produtos da categoria especificada. |
|
filterAtr |
Opcional |
Tipos e valores de filtros selecionados pelo shopper. Coloque aspas em todos os atributos, separe os tipos com o carácter pipe "|" e separe os valores com ponto e vírgula. É obrigatório incluir aspas em todos os atributos. Exemplo: filterAtr=color:"Red"|size:"M";"L" Note: filterAtr aplica-se apenas a atributos personalizados. Utilize filbr e includeBrandFilteredProducts para filtrar por marca. Disponível apenas para Search and Browse e requer configuração prévia pelo Algonomy. |
|
flv |
Opcional |
Versão Flash do browser. Utilizado apenas quando o conteúdo apresentado é em Flash. Exemplo: flv=20.0.0.306 |
|
fpb |
Opcional |
Marca em destaque na página. Utilizada para definir o seed em estratégias baseadas em marca, como Brand Top Sellers. Exemplo: fpb=Microsoft |
|
includeBrand FilteredProducts |
Opcional |
True/false. Altera a função de filbr de excluir para incluir. Se não especificado, o valor predefinido é false, o que exclui a marca indicada. Se true, o filtro de marca exclui todos os produtos exceto os da marca especificada. Exemplo: includeBrandFilteredProducts=true |
|
includeMVTData |
Opcional |
True/false. O valor predefinido é false. Se definido como true, inclui detalhes sobre qualquer teste multivariado (MVT) em execução. Exemplo: includeMVTData=true Exemplo de resposta JSON: Copy
|
|
includeMVTDetailedData |
Opcional |
True/false. O valor predefinido é false. Se definido como true, inclui detalhes sobre qualquer teste multivariado (MVT) em execução. O parâmetro string “eligible” indica se o utilizador é elegível para o teste MVT. Exemplo: includeMVTDetailedData=true Exemplo de resposta JSON: Copy
Quando definido como true, para testes do tipo Placement, a resposta inclui uma nova secção "mvtTreatments" com os detalhes do MVT associado ao placement. Exemplo de resposta JSON: Copy
Note: Apenas os tratamentos em que o placement participa são incluídos na resposta. Se o teste de Placement incluir múltiplos placements, todos incluirão “mvtTreatments” na resposta. Se existirem múltiplos testes de Placement para o mesmo placement, serão devolvidos múltiplos tratamentos. |
|
includeSkuData |
Opcional |
True/False. O valor predefinido é false. Se definido como true, quaisquer dados de SKU disponíveis no SKU Feed são incluídos nos produtos devolvidos. Exemplo: includeSkuData=true Exemplo de resposta JSON: Copy
|
|
includePriceFilteredProducts |
Obrigatório para minPriceFilter e maxPriceFilter |
True/false. Altera a função de minPriceFilter e maxPriceFilter de excluir para incluir. Se não especificado, o valor predefinido é false, excluindo produtos cujo preço corresponda ao intervalo definido. Se true, exclui todos os produtos fora do intervalo de preços. Exemplo: includePriceFilteredProducts=true |
|
includeStrategyData |
Opcional |
True/false. O valor predefinido é false. Se definido como true, cada placement na resposta inclui o nome da estratégia. Exemplo: includeStrategyData=true |
|
ipor |
Opcional |
Endereço IP do shopper. Utilize apenas se o pedido à API não for proveniente do dispositivo do shopper (por exemplo, integração server-side). Exemplo: ipor=255.255.255.255 |
|
jcb |
Obrigatório para jsonp |
Nome da função JavaScript para a qual os dados JSON são enviados. Deve ser especificado se jsonp estiver definido como true. Exemplo: jcb=processData |
|
jsonp |
Opcional |
Flag booleana. O único valor válido é true. Se definido como true, o parâmetro jcb também deve ser fornecido. Exemplo: jsonp=true |
|
lang |
Opcional |
Identifica o idioma solicitado através do respetivo código de idioma. Exemplo: &lang=sv-SE |
|
maxPriceFilter |
Opcional |
Valor máximo do filtro de intervalo de preço. Este filtro corresponde ao preço promocional do produto ou ao preço base, caso não exista preço promocional. O valor deve ser indicado em cêntimos. Note: Este parâmetro não funciona corretamente sem o uso de includePriceFilteredProducts. Exemplo: maxPriceFilter=10099 (equivalente a 100,99) |
|
minPriceFilter |
Opcional |
Valor mínimo do filtro de intervalo de preço. Este filtro corresponde ao preço promocional do produto ou ao preço base caso não exista preço promocional. O valor deve ser indicado em cêntimos. Note: Este parâmetro não funciona corretamente sem o uso de includePriceFilteredProducts. Exemplo: minPriceFilter=579 (equivalente a 5,79) |
|
o
|
Obrigatório em purchase_complete_page |
ID do pedido. Parte da definição do pedido. Exemplo: o=902312 |
|
pageCount |
Opcional |
Número total de páginas a devolver na resposta. O total de produtos devolvidos é (count * pageCount), até ao número total de produtos na categoria. O valor predefinido de pageCount é 1. Esta funcionalidade permite incorporar respostas paginadas do Discover em sistemas de pesquisa e navegação facetada. Para valores elevados de pageCount, recomenda-se devolver quantidades reduzidas de dados por produto, utilizando parâmetros adicionais como: "&excludeHtml=true&excludeItemAttributes=true&returnMinimalRecItemData=true" Exemplo: pageCount=50 Note: Aplicável apenas ao Discover. |
|
placements |
Obrigatório |
Lista de identificadores de placement. Cada identificador é composto por um tipo de página e um nome de placement. Os identificadores devem ser separados pelo carácter pipe "|". Recebe um conjunto de recomendações por placement. Todos os placements devem pertencer ao mesmo tipo de página. O primeiro placement é considerado o "melhor" placement e receberá a melhor estratégia de recomendação. Quando são solicitados múltiplos placements, cada um recebe uma estratégia distinta e produtos únicos. Exemplo: placements=item_page.horizontal|item_page.vertical |
|
pp |
Obrigatório em purchase_complete_page Opcional em cart_page |
Preços dos produtos. Lista que define os preços dos produtos comprados. O índice dos preços na lista corresponde aos produtos enviados em productId. Faz parte da definição do pedido. Utilize pp ou ppc para definir o preço dos itens comprados. Se utilizar pp, aplica-se o multiplicador de moeda do site. Os valores devem ser separados pelo carácter pipe "|". Exemplo: pp=29.99|32.97 |
|
ppc |
Obrigatório em purchase_complete_page Opcional em cart_page |
Preços dos produtos em cêntimos. Lista que define os preços dos produtos comprados. O índice dos preços corresponde aos produtos enviados em productId. Faz parte da definição do pedido. Utilize pp ou ppc. Se utilizar ppc, o multiplicador de moeda do site não é aplicado. O valor enviado é aceite tal como está e convertido de string para inteiro. Certifique-se de que contém apenas números, sem símbolos ou separadores. Separe os valores com o carácter pipe "|". Exemplo: ppc=2999|3297 (equivalente a 29,99 e 32,97) |
|
pref |
Opcional |
URL da página de referência. Pode existir em qualquer página. Indica o referer do shopper antes de visualizar a página. Utilizado para reporting e merchandising. Altamente recomendado. Exemplo: pref=http://www.google.com |
|
priceRanges |
Opcional |
Filtro baseado nos intervalos de preço aos quais os produtos devem pertencer. Não aplicável a clientes com preços localizados. Os valores devem ser indicados em cêntimos e os intervalos separados pelo carácter pipe "|". Exemplo: priceRanges=0;100|500;1000 Note: Aplicável apenas a Search and Browse. |
|
privm |
Opcional |
True/false. Quando definido como true, ativa o modo de privacidade para o pedido. Em modo de privacidade, os dados de afinidade do utilizador são ignorados e as recomendações são geradas sem personalização baseada em dados comportamentais. Isto garante que as recomendações respeitam as preferências de consentimento do utilizador e não utilizam dados comportamentais para utilizadores que recusam o rastreio. Exemplo: privm=true |
|
productId |
Obrigatório em item_page, purchase_complete_page e cart_page (quando não vazio) |
Um único ID de produto ou uma lista de IDs de produto. Faz parte da definição de encomenda na página de conclusão de compra. Utilize o carácter pipe "|" para separar os IDs de produto. Exemplo: productId=uv2345|xt1234 Note: Para o pedido add_to_cart_page, o ID do produto é enviado como Add to Cart ID através do parâmetro 'atcid'. Assim, este campo productId não é obrigatório. Note: Também é possível enviar IDs de SKU nas chamadas à API. Ao especificar um PRODUCT ID, o ID de SKU deve ser acrescentado com um separador til "~". Exemplo: ...&productId=[product_id]~[sku_id] |
|
q |
Obrigatório em purchase_complete_page Opcional em cart_page |
Quantidades dos itens. Lista que define as quantidades dos produtos comprados. O índice das quantidades na lista corresponde ao índice dos produtos enviados em productId. Faz parte da definição da encomenda e deve ser um número inteiro; valores decimais não são aceites. Separe múltiplas entradas com o carácter pipe "|". Exemplo: q=2|1 |
|
rcs |
Obrigatório |
Algonomy Cookie String. Trata-se do cookie Algonomy encriptado do utilizador associado ao pedido da API. Deve ser enviado exatamente como foi recebido numa resposta anterior da API. Os clientes devem garantir que preservam o valor de 'rcs' exatamente como foi fornecido. O parâmetro 'rcs' é sempre alfanumérico e sensível a maiúsculas/minúsculas, incluindo uma combinação de letras maiúsculas, letras minúsculas e números. Note: O parâmetro 'rcs' permite aos comerciantes fornecer à plataforma Algonomy acesso ao cookie de navegador do utilizador, funcionando como um proxy de cookie. Este processo envolve a leitura e escrita do cookie Algonomy do utilizador pelo comerciante e a sua transmissão de e para a Algonomy através da API server-side. |
|
returnMinimalRecItemData |
Opcional |
Limita o objeto JSON recommendedProducts a 4 atributos: id, productURL, clickURL e clickTrackingURL. |
|
rg |
Opcional |
Utilizado para identificar um registo específico. Exemplo: rg=Registry123454321 |
|
rgt |
Opcional |
ID do tipo de registo. Contacte a Algonomy para obter a lista de IDs de tipos de registo disponíveis para o seu site. Exemplo: rgt=wedding |
|
rid |
Opcional |
ID da região. Deve ser consistente com o ID utilizado no product region feed. Exemplo: rid=Switzerland-France |
|
searchTerm |
Obrigatório em search_page |
Termo de pesquisa introduzido pelo utilizador. Também pode utilizar o parâmetro productId para fornecer os IDs dos produtos presentes nos resultados da pesquisa. Exemplo: searchTerm=adriana lima |
|
sessionId |
Obrigatório |
Identifica uma única visita do utilizador. As sessões são utilizadas pelos modelos comportamentais para delimitar o comportamento do utilizador durante uma sessão de compra, bem como para métricas de reporting. Exemplo: sessionId=93484 |
|
sgs |
Opcional |
Fornece segmentos de utilizador. Utilizado para campanhas direcionadas por segmento. Liste cada segmento no formato segment_number:segment_name e utilize o carácter pipe "|" para separar segmentos. Deve enviar tanto o ID do segmento como o nome do segmento para cada entrada. Exemplo: sgs=101:NewUser|202:Male |
|
st |
Opcional |
Número inicial dos produtos que pretende devolver. Por exemplo, se quiser devolver os produtos 30 a 60, defina o valor como 30. Note: Aplicável apenas a Search and Browse. Ao utilizar paginação, este parâmetro é obrigatório juntamente com count. Exemplo: st=30 |
|
strategySet |
Opcional |
Lista priorizada de conjuntos de estratégias que pretende devolver com base no caso de uso da campanha. Consulte os detalhes adicionais na secção Strategy Families abaixo. Se não for fornecido, o motor de recomendação executa King of the Hill (KOTH) para apresentar as melhores recomendações com base na informação disponível. Exemplo: strategySet=SiteWideBestSellers ou strategySet=ProductBoughtBought|ProductViewedViewed |
|
ts |
Opcional |
Timestamp. Utilizado para evitar cache do browser e altamente recomendado. Se não for incluído, poderão ser apresentadas respostas em cache. Exemplo: ts=1376676943 |
|
udd |
Opcional |
Use Dummy Data. True/false. Se definido como true, devolve produtos aleatórios para fins de teste. Exemplo: udd=t |
|
userAttribute |
Opcional |
Chaves e valores personalizados que descrevem o utilizador atual. Separe a informação utilizando ponto e vírgula e o carácter pipe "|". Exemplo: userAttribute=eye_color:blue;green|hair_color:brown |
|
userAttributeReplace |
Opcional |
A utilização é igual a userAttribute, com a diferença de que os atributos enviados em userAttributeReplace substituem todos os valores anteriormente enviados para esse atributo. Exemplo: userAttributeReplace=eye_color:black No exemplo acima, todos os valores anteriores de eye_color serão removidos e substituídos por black. Se o mesmo atributo for enviado no mesmo pedido em userAttribute e em userAttributeReplace, o valor enviado em userAttributeReplace terá prioridade. Este atributo também suporta atualização de eliminação de valores. Exemplo: userAttribute=eye_color:|hair_color: |
|
userId |
Opcional |
ID do utilizador. String única para identificar cada utilizador. Todo o comportamento do utilizador é armazenado com base nesta chave. É sensível a maiúsculas/minúsculas e deve corresponder ao mesmo user ID enviado à Algonomy noutras aplicações. Exemplo: userId=0982347 |
|
rfm |
Opcional |
Refinements são utilizados para garantir que os produtos recomendados possuem um valor específico de atributo. Cada refinement é especificado como um par nome/valor separado por dois pontos. Exemplo: rfm=name:value Para indicar apenas a existência do atributo, pode omitir o valor. Exemplo: rfm=name Para especificar múltiplos refinements, utilize uma lista delimitada pelo carácter pipe "|". Exemplo: rfm=attributeName|attributeName1:value1|attributeName2:value2 Para mais informações, consulte a secção Refinements. |
|
rfm_cond |
Opcional |
Refina as recomendações com base em múltiplos valores utilizando os operadores lógicos 'and' e 'or', com o carácter pipe ('|') como delimitador para separar os valores. Note: rfm_cond só será aplicado se rfm estiver a ser utilizado. Se o parâmetro 'rfm_cond' não estiver presente no pedido, será considerado o comportamento predefinido (ou seja, lógica 'and'). Exemplo: rfm=attributeName:value1|attributeName2:value2&rfb=false&rfm_cond=or |
|
rfb |
Opcional |
Refinement Fall-Back. Controla o comportamento de fallback quando os refinements não produzem resultados suficientes. Exemplo: rfb=false O valor predefinido é true, o que significa que valores de refinement que reduzam as recomendações abaixo do limite mínimo do placement serão descartados. Para mais informações, consulte a secção Refinements. |
|
mvt_ftr |
Opcional |
Significa 'MVT Force Treatment'. Ao introduzir um treatment id, a resposta será forçada a utilizar o tratamento especificado. |
Adicionar o atributo 'categoryRec' na resposta
Quando uma estratégia está configurada para devolver categorias, cada produto devolvido por essa estratégia inclui o atributo categoryRec na resposta. Quando categoryData está definido como True para uma estratégia, cada produto devolvido incluirá categoryRec na resposta e apresentará os seguintes detalhes de categoria para os produtos na estratégia:
-
name
-
id
-
linkURL
-
imageURL
A informação de categoria para o Category Link URL e o Category Image URL pode ser fornecida no feed. Em alternativa, os link URLs podem ser construídos com base num padrão de URL, que pode ser configurado em Configurações do Site.
Exemplos de Pedidos (Recommend)
Obter o placement da Home Page com o ID de placement rr1 para o utilizador com ID 48454648:
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=showcaseparent&apiClientKey=776cdd80331919e7&userId=48454648&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=home_page.rr1
Solicitar o placement da Item Page com o ID de placement vertical_rail, utilizando o ID de produto seed 24516217 para o utilizador com ID 48454648.
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=showcaseparent&apiClientKey=776cdd80331919e7&userId=48454648&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=item_page.vertical_rail&productId=24516217
Solicitar o placement da Add to Cart Page com o ID demo_mobile para o utilizador com ID 48454648, enviando 24516217 (ID do produto adicionado ao carrinho) no parâmetro atcid.
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=showcaseparent&apiClientKey=776cdd80331919e7&userId=48454648&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=add_to_cart_page.demo_mobile&atcid=24516217
IMPORTANT: Se estiver a realizar uma implementação server-side, certifique-se de que adiciona cabeçalhos de compressão ao pedido. Isto permite que os servidores RR comprimam a resposta, resultando num payload menor e num tempo de resposta mais rápido. Exemplo:
Accept-Encoding: deflate, gzip
Exemplo de Resposta (Recommend)
{
"rcs": "eF5j4cotK8lM4TMzsNA11DVkKU32MEkyBAJjM11jYzMzXRNTozRdA0sgYZxiammQaGJmZmaaDABuTQ0O",
"placements": [
{
"htmlElementId": "home_page_0",
"placementType": "home_page",
"strategyMessage": "Shop Top Sellers",
"html": "",
"placement": "home_page.rr1",
"recommendedProducts": [
{
"clickURL": "https://integration.algorecs.com/rrserver/apiclick?a=showcaseparent&cak=776cdd80331919e7&ct=http%3A%2F%2Flabs.richrelevance.com%2Fstorre%2Fcatalog%2Fproduct%2Fview%2Fsku%2F22127002&vg=4b121136-3366-452f-092f-3d590a46665c&stid=126&pti=9&pa=11339&pos=0&p=22127002&channelId=776cdd80331919e7&s=827ccb0eea8a706c4c34a16891f84e7b&u=12345&mvtId=-1&mvtTs=1529712166361",
"regionPriceDescription": "",
"salePriceRangeCents": [
1,
1
],
"rating": 3.884,
"numReviews": 0,
"priceRangeCents": [
1,
1
],
"categoryIds": [
"Electronics",
"Electronics.Computers",
"Electronics.Computers.Tablet PCs"
],
"clickTrackingURL": "https://integration.algorecs.com/rrserver/apiclick?a=showcaseparent&cak=776cdd80331919e7&vg=4b121136-3366-452f-092f-3d590a46665c&stid=126&pti=9&pa=11339&pos=0&p=22127002&channelId=776cdd80331919e7&s=827ccb0eea8a706c4c34a16891f84e7b&u=12345&mvtId=-1&mvtTs=1529712166361",
"salePriceCents": 1,
"regionalProductSku": "22127002",
"imageURL": "http://labs.richrelevance.com/storre/media/catalog/product/n/e/nextbook-7quot-tablet-with-8gb-memory-with-google-mobile-services-73fbdb1640b18e99695aa87c7da712f5.jpg",
"name": "\"Nextbook 7\\\" Tablet with 8GB Memory with Google Mobile Services\"",
"genre": "default",
"isRecommendable": true,
"priceCents": 6900,
"attributes": {
"MktplcInd": [
"W"
],
"Clearance": [
"N"
],
"97CentShipping": [
"N"
],
"Rollback": [
"N"
],
"Online": [
"Y"
],
"ListPrice": [
"79"
],
"AddToCart": [
"Y"
],
"IsReducedPrice": [
"N"
],
"IsSubmap": [
"N"
],
"S2S": [
"Y"
]
},
"id": "22127002",
"categories": [
{
"hasChildren": false,
"name": "Electronics",
"childCategories": [],
"ancestorCategories": [],
"id": "Electronics",
"isActive": false
},
{
"hasChildren": false,
"name": "Computers",
"childCategories": [],
"ancestorCategories": [],
"id": "Electronics.Computers",
"isActive": false
},
{
"hasChildren": false,
"name": "Tablet PCs",
"childCategories": [],
"ancestorCategories": [],
"id": "Electronics.Computers.Tablet PCs",
"isActive": false
}
],
"categoryRec": {
"name": ,
"linkURL",
"imageURL",
"id":
},
"productURL": "http://labs.richrelevance.com/storre/catalog/product/view/sku/22127002",
"brand": "Nextbook"
}
]
}
],
"viewGuid": "4b121136-3366-452f-092f-3d590a46665c",
"status": "ok"
}
Parâmetros clickURL e clickTrackingUrl
A tabela abaixo descreve os principais parâmetros incluídos em clickURL e clickTrackingUrl, bem como a sua finalidade e utilização.
|
Nome |
Descrição |
|---|---|
| a | Corresponde à apiKey. Exemplo: a=:showcaseparent. |
| cak | Chave de cliente da API. Exemplo: cak=776cdd80331919e7. |
| ct |
Corresponde ao link URL do produto recomendado. É definido pelo cliente no catalog feed ou na Streaming Catalog API. Este parâmetro aplica-se apenas a clickURL. Exemplo: ct=http%3A%2F%2Flabs.richrelevance.com%2Fstorre%2Fcatalog%2Fproduct%2Fview%2Fsku%2F22127002. |
| vg |
View guid – utilizado para analytics. Exemplo: vg=4b121136-3366-452f-092f-3d590a46665c. |
| stid |
ID da estratégia (qual estratégia de recomendação gerou o resultado). Exemplo: stid=126. |
| pti | ID do tipo de página (corresponde a home_page, item_page, etc.). Exemplo: pti=9. |
| pa | ID da área de placement (referência interna da área/widget). Exemplo: pa=11339. |
| pos | Posição do item na lista de recomendações (0 = primeiro, etc.). Exemplo: pos=0. |
| p | ID do produto recomendado. Exemplo: p=22127002. |
| channelId | Idêntico a cak. Exemplo: channelId=776cdd80331919e. |
| s | Corresponde ao valor enviado pelo cliente no parâmetro sessionId no pedido. Exemplo: s=827ccb0eea8a706c4c34a16891f84e7b. |
| u | Corresponde ao valor enviado pelo cliente no parâmetro userId no pedido. Exemplo: u=12345. |
| mvtId | ID do teste multivariado (-1 = não está em teste). Exemplo: mvtId=-1. |
| mvtTs | Timestamp do teste multivariado (epoch no momento da atribuição do MVT). Exemplo: mvtTs=1529712166361. |
Exemplos de Pedidos (Discover)
Apresentar a primeira página (20 produtos por página) para um utilizador anónimo (sem user ID) na categoria 6406:
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=a6x5029gd6941a22&st=0&count=20&apiClientKey=x3f023fd649003&placements=category_page.richsort&sessionId=27083322340392734752015&userId=&categoryId=6406
Apresentar a primeira página (20 produtos por página) para o utilizador com ID 48454648, na categoria 6406:
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=a6x5029gd6941a22&st=0&count=20&apiClientKey=x3f023fd649003&placements=category_page.richsort&sessionId=27083322340392734752015&userId=48454648&categoryId=6406
Apresentar os 20 produtos seguintes (produtos 21-40) para a categoria 6406:
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=a6x5029gd6941a22&st=20&count=20&apiClientKey=x3f023fd649003&placements=category_page.richsort&sessionId=27083322340392734752015&userId=48454648&categoryId=6406
Apresentar a primeira página (20 produtos por página) para o utilizador com ID 48454648, na categoria 6406, mostrando apenas produtos com “color:black”:
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=a6x5029gd6941a22&st=20&count=20&apiClientKey=x3f023fd649003&placements=category_page.richsort&sessionId=27083322340392734752015&userId=48454648&categoryId=640&filterAtr=color:black
Exemplo de Resposta (Discover)
A resposta é um objeto JSON que lista cada produto apresentado ao utilizador. Segue um exemplo que devolve 2 produtos para a categoria de sapatos:
{
"rcs": "eF5j48otK8lM4TGy0DXUNWQpTfZINU80TLG0NNdNtrRM1DUxSk3WNTY3NdI1MjM1MUg1TzI0SzPgKgXqSeYwstBLBAAmHBDP",
"placements": [
{
"htmlElementId": "category_page_0",
"placementType": "category_page",
"strategyMessage": "RichSort",
"html": "",
"placement": "category_page.richsort",
"totalItemCount": 15077,
"recommendedProducts": [
{
"clickURL": "http://recs.algorecs.com/rrserver/apiclick?a=c3c5705fd6524a22&cak=c157ee7e70470913&ct=http%3A%2F%2Fwww.buystuff.com%2F9736903%2Fproduct.html&vg=2daa1dba-bcb7-4afe-1d65-c5540e7a6f9c&stid=165&pti=4&pa=12306&pn=-1&pos=0&p=9736903&channelId=c157ee7e70470913&s=270833223403927347520",
"regionPriceDescription": "",
"rating": 4.5700001716614,
"numReviews": 28,
"categoryIds": [
"sub22264",
"sub2747"
],
"clickTrackingURL": "http://recs.algorecs.com/rrserver/apiclick?a=c3c5705fd6524a22&cak=c157ee7e70470913&vg=2daa1dba-bcb7-4afe-1d65-c5540e7a6f9c&stid=165&pti=4&pa=12306&pn=-1&pos=0&p=9736903&channelId=c157ee7e70470913&s=270833223403927347520",
"regionalProductSku": "9736903",
"imageURL": "na",
"name": "Women's Lace-Up Rugged Boots",
"isRecommendable": true,
"priceCents": 1999,
"attributes": {
"size": [
"9"
],
"material": [
"Faux Leather"
],
"color": [
"Brown"
],
"style": [
"Lace-Up Boots"
],
"shoe width": [
"Medium"
]
},
"id": "9736903",
"categories": [
{
"hasChildren": false,
"name": "Boots",
"id": "sub2747"
}
],
"productURL": "http:\/\/www.buystuff.com\/9736903\/product.html",
"brand": "None"
},
{
"clickURL": "http://recs.algorecs.com/rrserver/apiclick?a=c3c5705fd6524a22&cak=c157ee7e70470913&ct=http%3A%2F%2Fwww.buystuff.com%2F8342906%2Fproduct.html&vg=2daa1dba-bcb7-4afe-1d65-c5540e7a6f9c&stid=165&pti=4&pa=12306&pn=-1&pos=1&p=8342906&channelId=c157ee7e70470913&s=270833223403927347520",
"regionPriceDescription": "",
"rating": 3.7799999713898,
"numReviews": 60,
"categoryIds": [
"sub2747"
],
"clickTrackingURL": "http://recs.algorecs.com/rrserver/apiclick?a=c3c5705fd6524a22&cak=c157ee7e70470913&vg=2daa1dba-bcb7-4afe-1d65-c5540e7a6f9c&stid=165&pti=4&pa=12306&pn=-1&pos=1&p=8342906&channelId=c157ee7e70470913&s=270833223403927347520",
"regionalProductSku": "8342906",
"imageURL": "na",
"name": "Journee Collection Women's 'Spokane' Regular and Wide-calf Studded Knee-high Riding Boot",
"isRecommendable": true,
"priceCents": 4949,
"attributes": {
"size": [
"5",
"7"
],
"toe shape": [
"Round"
],
"boot height": [
"Knee-High Boots"
],
"heel height": [
"Low Heel"
],
"material": [
"Faux Leather"
],
"footbed": [
"Slightly Padded"
],
"color": [
"Tan"
],
"style": [
"Riding Boots"
],
"shoe width": [
"Medium"
]
},
"id": "8342906",
"categories": [
{
"hasChildren": false,
"name": "Boots",
"id": "sub2747"
}
],
"productURL": "http:\/\/www.buystuff.com\/8342906\/product.html",
"brand": "Journee Collection"
}
]
}
],
"viewGuid": "2daa1dba-bcb7-4afe-1d65-c5540e7a6f9c",
"status": "ok"
}
Rastreamento de Eventos
Este endpoint regista automaticamente um evento de visualização de página quando é chamado. Também regista automaticamente uma impressão de placement para cada placement devolvido. Por exemplo, se solicitar três placements, mas apenas um for devolvido, este endpoint regista a impressão apenas para o placement devolvido.
Quando os placements de personalização são devolvidos, o recsForPlacements expõe tanto o productURL como os trackers de evento de clique. Quando o utilizador clica num produto recomendado, é obrigatório chamar o click event tracker correspondente antes de redirecionar o utilizador para a página de detalhe do produto. Isto garante que a Algonomy consegue associar o clique às visualizações e medir corretamente o CTR. Esta API expõe os seguintes URLs:
-
productURL é o URL direto para a página de detalhe do produto. Utilize este URL para criar o link para a página do produto, normalmente como atributo href de uma tag <a>.
-
clickTrackingURL regista o clique no produto sem redirecionar o utilizador para a página de detalhe. Para fins de SEO, pode utilizar este URL juntamente com productURL e acionar um pedido para clickTrackingURL através de um event listener de clique.
-
clickURL regista o clique no produto e redireciona o utilizador para a página de detalhe através de um redirecionamento HTTP 301.
-
amrid regista o clique na regra de Advanced Merchandising que devolveu a recomendação do produto.
Para rastrear cliques com sucesso, utilize uma das seguintes opções:
-
Utilize clickURL, que regista automaticamente o clique e redireciona o utilizador para a página de detalhe do produto, ou
-
Utilize productURL como URL final e acione um pedido para clickTrackingURL através de um event listener. Esta é a abordagem recomendada quando existe otimização de SEO.
O seu código deve incluir lógica semelhante à seguinte para apresentar recomendações de produtos personalizadas:
$('#personalization').on('click', 'a', function() {
var targetURL = $(this).data('clickTrackingURL');
var img = new Image();
img.src = targetURL;
});
var recsForPlacementsURL = 'https://recs.algorecs.com/rrserver/api/rrPlatform/recsForPlacements?apiKey=a6x5029gd6941a22&apiClientKey=x3f023fd649003&placements=home_page.recommend&sessionId=27083322340392734752015'
$.getJSON(recsForPlacementsUrl, function(r) {
if (!(r.placements && $.isArray(r.placements))) {
return false;
}
var placementElement = $('#personalization');
var products = r.placements[0].recommendedProducts;
for (var i in products) {
var product = $('<a>')
.attr('href', products[i].productURL)
.data('clickTrackingURL', products[i].clickTrackingURL)
.text(products[i].name)
.appendTo(placementElement);
}
});
This will create the following HTML structure, and will trigger a click event before redirecting the user to the Product Detail Page.
<!-- The href value is productURL from a recsForPlacements response -->
<div id="personalization">
<a href="/product/1">Product 1</a>
<a href="/product/2">Product 2</a>
<a href="/product/3">Product 3</a>
<a href="/product/4">Product 4</a>
<a href="/product/5">Product 5</a>
</div>
Testes
Para testar a integração dos eventos de clique, utilize um web proxy ou as Developer Tools do seu browser para monitorizar os pedidos de rede. Deve visualizar um pedido semelhante ao seguinte:
http://recs.algorecs.com/rrserver/apiclick?a=5c84741760900058&vg=c12ab4b2...s=1437007681319&pg=1653&p=36714988&ind=0
Este pedido deverá apresentar um código de estado 200 e um corpo de resposta vazio.
IMPORTANT: Se não visualizar este pedido, a página não está a registar eventos. Certifique-se de que os cliques estão a ser registados e enviados para a Algonomy. A ausência de registo de cliques terá um impacto negativo no desempenho da personalização.
Para forçar o modo de Desenvolvimento, utilize 'devMode=true'.