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.

Copy
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.

Copy
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
"categories": [
  {
    "hasChildren": false,
    "name": "Solder",
    "childCategories": [],
    "ancestorCategories": [
      {
        "hasChildren": true,
        "name": "Metals",
        "childCategories": [],
        "ancestorCategories": [],
        "id": "4",
        "isActive": false
      }
    ],
    "id": "1572",
    "isActive": false
  }
],

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
"mvt":
[
{ "testId":12953, "control":false, "treatmentId":15707, "treatmentName":"T2 - recs OFF” }
], 

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
"mvtDetailed":
[
{ "eligible":true, "testId":12953, "control":false, "treatmentId":15707, "treatmentName":"T2 - recs OFF” }
]

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
"placements":[
{
"mvtTreatments": [
{
"testType": "Placement”,
"testId": 55564,
"control": true,
"treatmentId": 60129,
"treatmentName": "swap_each_other"
}
]

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
"skuData": [{
  "color": "White",
  "size": "12",
  "image_url": "http://demandware.edgesuite.net/9400.jpg",
  "sku_id": "9400"
}, {
  "color": "White",
  "size": "13",
  "image_url": "http://demandware.edgesuite.net/9401.jpg",
  "sku_id": "9401"
}]

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:

Copy
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.

Copy
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.

Copy
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:

Copy
Accept-Encoding: deflate, gzip

Exemplo de Resposta (Recommend)

Copy
{
  "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:

Copy
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:

Copy
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:

Copy
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”:

Copy
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:

Copy
{
  "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:

  1. Utilize clickURL, que regista automaticamente o clique e redireciona o utilizador para a página de detalhe do produto, ou

  2. 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:

Copy
$('#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.

Copy
<!-- 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:

Copy
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'.