func (smg *SMGeneric) LCRSuppliers(gev SMGenericEvent) (suppls []string, err error) { cacheKey := "LCRSuppliers" + gev.GetCgrId(smg.timezone) + gev.GetAccount(utils.META_DEFAULT) + gev.GetDestination(utils.META_DEFAULT) if item, err := smg.responseCache.Get(cacheKey); err == nil && item != nil { if item.Value != nil { suppls = (item.Value.([]string)) } err = item.Err return suppls, err } defer smg.responseCache.Cache(cacheKey, &cache.CacheItem{Value: suppls, Err: err}) gev[utils.EVENT_NAME] = utils.CGR_LCR_REQUEST var cd *engine.CallDescriptor cd, err = gev.AsLcrRequest().AsCallDescriptor(smg.timezone) cd.CgrID = gev.GetCgrId(smg.timezone) if err != nil { return } var lcr engine.LCRCost if err = smg.rater.Call("Responder.GetLCR", &engine.AttrGetLcr{CallDescriptor: cd}, &lcr); err != nil { return } if lcr.HasErrors() { lcr.LogErrors() err = errors.New("LCR_COMPUTE_ERROR") return } suppls, err = lcr.SuppliersSlice() return }